7 个 Python 问题,来扫扫盲

90天玩转Python—05—基础知识篇:Python基础知识扫盲,使用方法与注意事项 在Python编程中,你会经常遇到一些内置函数和方法,它们可以帮助你更高效地编程。len():用于获取列表、字符串、元组等可迭代对象的长度。append():用于向列表的末尾添加新元素。pop():用于从列表中移除并返回最后一个元素(或指定索引的元素)。split():字符串方法,用于将字符串按照指定的分隔符拆分成多个子字符串,并返回一个列表。join():字符串方法,用于将列表或其他可迭代对象中的字符串元素连接起来,形成一个新的字符串。 阅读详情

这 7 个问题,我是有收获的,整理如下:

1、反射算术运算符

你可能知道 Python 里面的魔法函数,比如 __add__ 和 __sub__ 代表 + - 运算符,表示 obj +/- something,但你可能不知道还有一个 __radd__,__rsub__ 函数,可以表示 something +/- obj。

举例如下:

class Dog:
    def __add__(self, other):
        return "from __add__"
    def __radd__(self, other):
        return "from __radd__"
dog = Dog()
print(dog + 1)   # from __add__
print(1 + dog)   # from __radd__

2、getattr vs getattribute

__getattr__ 魔术方法只有在我们试图获取不存在的属性时才会被调用,__getattribute__ 在每次我们尝试访问属性时都会被调用。

代码如下:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __getattr__(self, key):
        return f"{key} not found"
dog = Dog("taidi", 5)
print(dog.name)    # taidi
print(dog.age)     # 5
print(dog.breed)   # breed not found
class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __getattribute__(self, key):
        return f"{key} not found"
dog = Dog("taidi", 5)
print(dog.name)    # name not found
print(dog.age)     # age not found
print(dog.breed)   # breed not found

3、super().init() 的另一种写法

class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age
class Dog(Animal):
    def __init__(self, name, age, breed):
        super().__init__(name, age)
        self.breed = breed

等价于:

class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age
class Dog(Animal):
    def __init__(self, name, age, breed):
        Animal.__init__(self, name, age)
        self.breed = breed

请注意,Animal.__init__(self, name, age) 不能少了 self 参数。

4、检查子类的方法

class Animal: pass
class Dog(Animal): pass
class Cat(Animal): pass
class GermanSheperd(Dog): pass
print(Animal.__subclasses__())
# [<class '__main__.Dog'>, <class '__main__.Cat'>]

不过,.__subclasses__() 只能检查直接子类。

5、多重继承时,同名函数,子类用的是哪一个?

class A:
    def test(self):
        print("A")
class B:
    def test(self):
        print("B")
class C(A, B):
    pass

C().test()   # A

A 和 B 都有 test 方法,那么 C 到底继承了哪一个呢?在 Python 中,最左边的类优先。

在这里,A 是最左边的父类,因此 A 的 test 方法被继承。

多重继承让人困惑,不用为好。

6 invert 魔法函数

class Dog:
    def __invert__(self):
        return "test"
dog = Dog()
print(~dog)   # test

~ 运算符代表“按位非”,通常用于反转内容。一个更有意义的例子如下:

class Coordinate:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __str__(self):
        return f"({self.x}, {self.y})"
    def __invert__(self):
        return Coordinate(-self.x, -self.y)
a = Coordinate(3, 4)
b = ~a
print(a, b)   # (3, 4) (-3, -4)

7、不使用 class 来创建类

def init(self, name, age):
    self.name = name
    self.age = age
def bark(self):
    print("woof")
Dog = type("Dog", (), {"__init__":init, "bark":bark})


dog = Dog("taidi", 10)
print(dog.name)
print(dog.age)

# taidi
# 10

在这里,我们将 3 个参数传递给 type 以创建我们的类。

第一个参数 __name__ 是类的名称 第二个参数 __bases__ 是一个包含父类的元组 第三个参数 __dict__ 是一个包含属性和方法的字典。

等价于:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def bark(self):
        print("woof")

最后

以上七个问题,如有帮助,请点赞关注支持。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方优快云官方认证二维码或者点击链接免费领取【保证100%免费】

Python扫盲 1,Python不需要预先定义变量,随用随定义 2,python3.6和python3.6m的区别: 初始安装的Linux Ubuntu18.04系统的/usr/bin/下面有四个文件:python3 python3.6 python3.6m python3m 其中 python3.6 python3.6m为可执行文件,python3、python3m分别为指向这两个文件的链接文件 ... 阅读详情

相关推荐

Synopsys Sentaurus TCAD新手教程:从零开始仿真trench MOSFET(附完整代码解析)

本文提供Synopsys Sentaurus TCAD新手教程,详细讲解从零开始仿真trench MOSFET的全过程,包括环境搭建、外延生长、沟槽刻蚀、栅极形成等关键步骤,并附完整代码解析。通过实际案例帮助半导体工程师掌握Sprocess操作技巧,优化工艺参数设置,提升仿真效率。

weixin_30505225的博客 220

python标识符包括哪些_为小白扫盲:Python入门必备知识

原标题:为小白扫盲:Python入门必备知识版权声明:本文为优快云博主「程序员野客」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/ityard/article/details/102807071————————————————目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9...

weixin_39585886的博客 4039

西门子机床数据采集实战:从828D到840DSL的CNC设备联网与实时监控

本文深入探讨了西门子机床数据采集的实战方案,重点解析了从828D到840DSL等CNC设备如何实现免授权、低成本联网与实时监控。文章通过对比不同型号系统的数据接口差异,提供了详细的配置步骤、核心数据点清单以及避坑指南,旨在帮助工厂技术人员经济高效地挖掘机床数据价值,提升生产管理效率。

weixin_29181861的博客 1329

Python 快速扫盲—— 基础篇

本文首发于:https://www.xerrors.fun/python-basics/ 大家都是有一定的 C语言的基础的,所以就先罗列一下 python 与 c 语言的区别;从某种角度上来说,python 是一种脚本语言 写在前面 以下演示脚本基于 Python 3.7.2 你需要在电脑上面安装并配置好自己的 Python 版本 Windows | macOS 编辑器推荐使用 VS Co...

Xerrors 445

Virtuoso ADE Explorer实战技巧:从基础操作到高级仿真

本文深入解析了Virtuoso ADE Explorer在模拟电路仿真中的核心价值与实战技巧。作为Cadence平台的专业工具,它专为高效、系统化的设计空间探索而生,能大幅提升PVT验证、参数扫描和蒙特卡洛分析的效率。文章从基础界面操作、并行仿真管理,到高级的参数扫描、数据报告生成及蒙特卡洛结果深度剖析,提供了全面的避坑指南与工作流优化建议,帮助工程师从重复劳动中解放,专注于电路设计与性能优化。

ios99的博客 899

Ubuntu 20.04下大陆ARS408毫米波雷达点云数据采集与RVIZ实时可视化全流程解析

本文详细解析了在Ubuntu 20.04系统下,如何实现大陆ARS408毫米波雷达的点云数据采集与RVIZ实时可视化全流程。内容涵盖硬件连接、ROS Noetic环境搭建、CAN接口配置、数据验证及自动化脚本编写,为机器人感知、自动驾驶等领域的开发者提供了一套稳定、实用的实战方案。

bash7scripter的博客 699

[转]Python扫盲

0,ubuntu更改python版本指向。将当前使用condainstall的python3.7用于系统和用户默认的python版本 1, 查看当前用户的python位置:$ which python3.7 2,查看全局(系统)的python位置:$ sudo which python3$ sudo which python3.5发现系统没有3.7 3,修改当前用户的的python版本:$ sudo vi ~/.bashrc加入:alias python='/home/user1/miniconda3.

dingyufei的博客 708

基于Java+SpringBoot+微信小程序实现奶茶点单系统

再不用担心逢年过节的第一杯奶茶有没有人送了,制作一个奶茶点单系统自己当店主,开怀畅饮,一劳永逸。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

python chr & ord (扫盲ASCII和Unicode 我扫我自己)

早期计算机的诞生就是用来处理计算的,计算就涉及到有输入输出,而英美国家使用英语,需要表示的大概就是26个英文字母加上数字0-9,运算符号,以及一些特殊符号。但是互联网的出现,计算机会被使用在不同语言的不同国家,因此需要一套新的规则,能够实现类似ASCII的功能,能够将计算机的01码转换为不同语言的文字和字符。=====================前面都是铺垫=========================一方面使用8位会更加稳妥,方便扩展,另一方面,8本身也是2的幂次,计算会比7更加简便。

vaeseven9的博客 578

基于知识图谱的农作物病虫害问答系统设计与实现

基于规则的问题分类是自问答系统诞生以来就一直存在的方式,主要代表就是众多的专家系统,构建专家系统采用的是规则分类器,优点是能够对特定领域、特征明显的问题进行高效精准问答,但是。,在问答系统中,问题以语音及文本字符等自然语言形式输入,利用问答系统的内部的逻辑处理模块,通过自然语言处理技术获得输入问句的详细语义信息,再经过知识检索、置信分析等步骤,自然语言处理中,用于文本分类任务的机器学习方式有两种,一种用传统的机器学习,如 NBC、SVM 等,另一种采用深度学习,如 CNN 和 RNN 等。

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 2166

基于特征模仿的YOLOv5中间层知识蒸馏:原理、实现与实验全解析

目标检测中的模型轻量化是一个关键挑战。本文提出一种基于特征模仿(Feature Imitation)的YOLOv5中间层知识蒸馏方法,通过让学生模型学习教师模型的中间层特征表示,显著提升轻量级检测器的性能。我们将详细阐述蒸馏损失函数的设计、特征对齐策略、训练流程,并提供完整可运行的代码实现。同时,推荐多个适合蒸馏训练的数据集,并通过实验验证方法的有效性。

YOLO 186

《Python快速入门》基础知识扫盲课

1、Python 初体验 2、Python 引号 3、Python 注释 4、Python 保留字符 5、Python 行和缩进 6、Python 空行 7、Python 输出 8、Python 输入

独木不成林,单弦不成音。 1万+

RagFlow专题三、RagFlow 关键技术(向量数据库、文档分块、Prompt 设计与召回排序优化)

FAISS 是由 Meta(Facebook)开源的高效向量检索库,适用于大规模向量搜索任务。,并了解了如何通过 RagFlow 机制优化信息检索和生成质量。(FAISS、Milvus、ES)用于高效存储和检索语义向量。提高 LLM 生成效果,增强 RagFlow 任务质量。(分块)策略,将文档拆分成更小的片段,提高检索效率。提高检索精准度,避免文本过长导致信息丢失。提升检索结果的相关性,提高生成质量。当多个检索结果被返回时,我们需要一个。在前一篇文章中,我们详细探讨了。在 RagFlow 任务中,

xiaoqi270620903的专栏 3040

Python 快速扫盲—— 输入与输出

本文首发于:Python 快速扫盲—— 输入与输出 获取输入 Python中并不存在利用 %d、%c 进行格式化输入,无论用户的输入如何,都会读取一行转化成字符串,然后返回给程序。所以,我们没有办法直接获取用户输入的数字。 获取单个数据 获取用户输入的字符串应该没有任何问题,主要是数字方面无法直接获取,所以,我们可以间接的获取用户输入的数据,比如获取用户输入的数字: num_test = int(...

Xerrors 372

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【深度学习知识点扫盲】病态、病态条件

【深度学习知识点扫盲】病态、病态条件

Xixoqw的博客 5790

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python学习快速扫盲

人生苦短,我用Python

未完成的歌~的博客 1510

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python爬虫基础扫盲之urllib.pase解析URL

在笨方法“学习python笔记之urlopen,中提了urllib主要是提供打开网页,解析url等功能用于网络爬虫,其lib主要包含四个部分,其中urllib.parse主要是负责url的解析与分解,在上节扫盲文章中主要讲解了url的基础构成部分,主要由6部分构成: <scheme>://<net_loc>/<path>;<params>?&lt...

weixin_42730667的博客 1752

python3.7和3.5_python3.5.2与python2.7.5齐飞,我与ipython5.0.0不得不说的故事

今天准备了一台centos7的虚拟机,想拿来当python小霸王学习机。系统自带python版本2.7.5,经过我认真琢磨,要学咱就学新版本小py,所以果断安装了一个python3.5.2下载解压,进入目录,因为怕直接安装完maybe跟系统的python会发生点什么剧情,比如yum用不了之类的,所以我指定了一下python的路径./configure --prefix=/usr/local/pyt...

weixin_39583013的博客 176

Python基础扫盲(二)

Python是一种高级编程语言,它的设计目标包括简洁,易读和可维护性,他有强大的标准库和第三方库,适合各种开发需求,支持多种编程范式,包括面向对象,函数式和过程式编程,跨平台性,可在多种操作系统上运行用来定义类的 创建,和行为的类。

qq_63314572的博客 361

python扫盲系列-(2)

Python 使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:--------------------文章内容来自菜鸟教程;(仅用做学习!) Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。 等号...

qiu_zhi_liao的博客 269

python爬虫基础扫盲之URL

URL全称为Uniform Resurce Locator统一资源定位符,在上世纪90年代互联网刚刚发展起来时,为了解决在多机联网上场景中便于方便查找资源,于是一帮人(当然大部分是美国人)制定了一个标准,为网上各个资源统一定义一个资源位置,方便大家查找资源,该资源位置即为URL,每个资源的URL为全球唯一,后来该标准逐渐纳入到RFC当中,URL的RFC协议总体纲要为RFC1808,该协议对URL的...

weixin_42730667的博客 1569

python3扫盲系列-(3)

Linux/Unix的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在/usr/local/python3目录中。 安装完成后,我们可以将路径/usr/local/python3/bin添加到您的 Linux/Unix 操作系统的环境变量中,这样您就可以通过 shell 终端输入下面的命令来启动 Python3 。 PATH=$PATH:/us...

qiu_zhi_liao的博客 209
上一篇: 如何用 Python 批量循环读取 Excel ?
下一篇: 使用 Python 实现复制粘贴的功能
普通网友
博客等级 码龄3年 4493粉丝 309原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值