Python 词条(355 条)
关键字
def定义一个函数,就像写一张“菜谱”并给它起个名字,比如“番茄炒蛋”。
以后你说“做番茄炒蛋”,别人就知道按这张菜谱的步骤来做菜。
return把函数算好的结果送回调用处,并结束函数。就像一个外卖员,把商家(函数)做好的餐(算出结果)送到客户(调用处)面前,这一单也随之结束。如果没有其它单(其它调用),他就不会继续工作,只有接到其它单的时候,他才会继续工作。
if根据条件真假决定走哪条路,像红绿灯:条件为真就通行,为假就停。
elif前面条件不成立时再试一个新条件,就像考试评级:先看是否 ≥90,不是再看 ≥80,不是再看 ≥60,满足哪个就定哪个等级,后面的条件直接跳过。
else上面所有条件都不成立时执行的兜底分支,像是你的出行时排计划,当你发现所有地方都不能去,那就只能在家里呆着了,这里的“家里呆着”就是这个出行计划的兜底分支。
for把一个可迭代对象里的元素逐个取出来处理,像超市收银员把购物车里的商品一件一件扫过收银台。
while只要条件成立就反复执行,就像洗衣机每转一圈前都检查一下“衣服还湿吗?”
还湿(条件为真)→ 再转一圈(执行循环体)
干了(条件为假)→ 停止(退出循环)
如果一开始衣服就是干的,那就一圈都不转(循环体一次都不执行)。
break立刻跳出当前这层循环,像跑步比赛:你跑了三圈,突然接到通知说比赛取消,你就会立刻停下,不会再跑剩下的圈。
continue跳过本次循环剩余部分,直接进入下一轮,像流水线分拣:遇到不合格的产品,不进行包装,直接放过去,继续处理下一个产品。
in1、判断一个值是否在容器里,像查字典时看某个字在不在索引里。
2、用在 for 循环里,表示“从容器中逐个取出元素”,这时候它不是判断,而是迭代。就像for是收银员从购物车里拿东西直到拿完为止,in就是从购物车里拿东西的这个动作。
not把布尔值反过来,像反义词转换器:输入“是”,输出“否”;输入“否”,输出“是”
and两边都为真结果才为真,像有两个锁的金库大门:两把钥匙都必须插对才能打开。
or只要一边为真结果就为真,像你有两把伞:下雨时只要带了其中一把,就不会淋湿。
is判断两个名字是不是指向同一个对象,像判断两个照片是不是同一个人,不看两个长得像不像,而是看身份证能否对得上。
NonePython 里的空值,表示‘什么都没有’,像一个空标签,表示这里没有实际的东西。
True布尔真值,表示条件成立。像开关的‘开’档;注意首字母大写。
False布尔假值,表示条件不成立,像开关的‘关’档;注意首字母大写。
import把别人写好的工具包引进来用,就像安装了一个 App,之后需要时打开用,而不是让 App 一直运行。
from从模块里挑出指定工具导入,打个比方:
import 微信
相当于你安装了整个微信 App。
要用“朋友圈”时,你得先打开微信,再去点“朋友圈”图标。
代码里就是 微信.朋友圈(),要加模块名前缀。
from 微信 import 朋友圈
相当于你只把“朋友圈”这个功能做成一个独立的桌面快捷方式。
要用的时候,直接点桌面的“朋友圈”图标就能用,不用先打开微信。
代码里就是 朋友圈(),不用加模块名。
as给导入的模块或工具起个别名,长名字变短,方便后续使用。就像给肯德基起名“KFC”,以后用到或者看到KFC就知道是肯德基了。
class定义一张造对象的图纸,像蛋糕模具:按同一个模具可以做出很多形状一样的蛋糕。
pass占位符——告诉 Python 这里暂时什么都不做,避免空代码块报错。
lambda创建一个没有名字的临时小函数,只用一行就写完,用完就扔,就像便利贴:临时记个事,用完撕掉,不用专门准备个笔记本。它适合简单、快速的计算,不适合复杂的逻辑。
try把可能出错的代码放进一个“安全试验区”里试着运行,就像让你家小孩在铺了软垫的围栏里学走路:摔倒了(出错)有垫子接着,不会伤到外面,你还能过去扶一下(处理错误),然后继续正常生活。程序不会因为这个小意外就整个崩掉。
except捕获 try 块里抛出的指定错误并处理,像备用方案,planB。
finally异常处理里的“收尾”块:不管 try 里出不出错,最后都会执行。
raise主动抛出异常,让程序在不符合预期的地方停下来并给出提示。像是一个质检员,发现错误就上报老板。
with帮你自动管理资源,比如打开文件后,离开 with 块时自动关闭,不用自己写 close(),类似于一个能在你离开房间之后自动把房间打扫干净并关上门的保洁。
global函数内部,如果你想修改全局变量(函数外面定义的变量),必须先声明 global,否则 Python 会以为你定义了一个新的局部变量。像你在房间里要拿客厅的遥控器,需要先说明“我要用客厅那个”。
nonlocal在嵌套函数里,修改外层函数的变量(不是全局也不是本地),需要声明 nonlocal。像你在里屋跟智能管家说想调外屋的灯开关,得说明“我要动外面那盏灯”。
del删除一个变量或列表里的某个元素,让那个名字不再存在。今后再用到这个名字时就会报错。
assert检查一个条件是否成立,如果成立就什么都不做;不成立就立刻报错。像门卫检查你有没有带证件,带了就放行,没带就拦住。
yieldyield 让函数变成一个“生成器”,可以一次只给一个结果,给完暂停,下次继续从暂停的地方接着给,而不是一口气把所有结果都算出来返回。
就像在食堂打饭:你拿小碗打饭,阿姨舀一勺给你,你走了她也不追着给;吃完不够再来的时候,她再舀下一勺。这样不会一次把所有饭都堆你碗里,省内存,也灵活。
async定义异步函数,这种函数执行时可以“暂停”,让程序先去干别的事,之后回来继续。像你在餐厅点完餐,不用站在柜台干等,可以回座位玩手机,等叫号再去取餐。
await在异步函数里,await 表示“暂停这里,等这个异步操作完成,期间程序可以先做其他事,操作完成后继续往下走”。像取号后等叫号,叫到你再回到柜台,但等待的时候你可以玩手机。
matchmatch 和 case 通常一起使用,用于模式匹配,类似于其他语言里的 switch,但更强大。像快递分拣中心:根据包裹上的信息,把它分到对应的格口。
casematch 语句里的一个分支,匹配上对应模式就执行它的代码。match 是“总台”,把一个值拿过来;case 是各个“格口”,匹配到哪个格口就执行那个格口的代码。如果都不匹配,还可以有 case _ 作为“其他”格口。
内置函数
print把内容打印到屏幕,像超市收银机吐小票:你要什么,它就一行行吐出来。
input程序运行到这里会停下来等你打字,就像 ATM 机提示你输密码:屏幕显示一句话,等你输完按回车,它才把你输入的内容交给程序继续处理。
type把任何一个值拿过来,type 会告诉你它属于哪一类(比如是整数、字符串、列表还是字典)。就像快递面单上标注了包裹里是什么东西,一眼就能看明白。
lenlen 用来数一个“容器”里有多少个元素。就像数一摞盘子有几个:不管盘子大小、颜色,只数数量。在 Python 里,这个“容器”可以是列表、字符串、元组、字典、集合等。
rangerange 用来快速生成一串有规律的数字,常用于循环中控制次数。它像一个自动报数器:你告诉它从几开始、到几结束、每次跨几步,它就会按规律报出数字。注意:它报出的数字不包括结束值,就像排队时从第1个报到第5个,但第5个不报出来,只报到第4个就停。
intint 用来把其他类型转换成整数,或者直接表示整数。就像把“3.14”这个小数直接砍掉小数点后面的部分,变成“3”。如果字符串里是数字文字,也能转成整数。
strstr 用来把任何值转换成字符串,就像给任何东西套上一个外壳。不管原来是数字、列表还是布尔值,都能变成文字形式。
floatfloat 用来把其他类型转换成小数(浮点数)。就像给一个整数加上小数部分,或者把字符串里的数字文字变成小数。
boolbool 用来判断一个值是“真”还是“假”,返回 True 或 False。就像一个测谎仪,对就是真,不对就是假。它也用来把其他值转成布尔值。
listlist 用来创建一个列表,或者把其他可迭代对象转成列表。列表像一个有编号的储物柜,每个格子可以放不同的东西,编号从 0 开始。
dictdict 用来创建字典,或者把键值对形式的可迭代对象转成字典。字典像一个通讯录:每个名字(键)对应一个电话号码(值),通过名字就能查到电话。
setset 用来创建集合,或者把其他可迭代对象转成集合。集合像一袋子不重复的球,每个球只出现一次,顺序不定。
tupletuple 用来创建元组,或者把其他可迭代对象转成元组。元组像一个密封的透明盒子:一旦创建就不能修改内容,只能读取。
sum`sum` 把一个可迭代对象(比如列表、元组)里的所有数字加起来,返回总和。就像你有一堆零钱,一个一个加起来,最后得到一个总数。它还能指定一个起始值,就像先把一张钞票放在桌上,再把零钱加在上面。
min`min` 返回可迭代对象中最小的元素,或者多个参数中最小的那个。就像能自动从一堆苹果里挑出最小的一个,或者比较几根绳子找出最短的那根。
max`max` 返回可迭代对象中最大的元素,或者多个参数中最大的那个。就像自动从一堆水果里挑出最大的一个。
abs`abs` 返回一个数的绝对值,也就是去掉符号后的数值。跟数学上的绝对值符号是一样的用处。绝对值符号是什么就不用多说了吧?
round`round` 对数字进行四舍五入,可以指定保留几位小数。这个没啥好比喻的,只能单独记。
sorted`sorted` 返回一个排序后的新列表,原列表不变。就像给许多张在桌上随便排列的扑克牌拍了照,然后在照片上给这堆牌重新排序。至于桌上原本那摊牌,其实从头到尾都没有动过。
reversed`reversed` 返回一个反向迭代器,可以倒序遍历序列中的元素。就像把一本书从最后一页往前翻,而不是从头翻起。
enumerate`enumerate` 在遍历可迭代对象时,同时给出索引和值。就像体育老师排队点名的时候让学生报数,然后他就知道排第几位的是哪个学生了。不过要注意,在 Python 里,enumerate 默认是从 0 开始报数的
zip`zip` 把多个可迭代对象“拉链式”地合并起来,每次从各个对象中取出一个元素组成元组。就像是红娘,把多个相亲的人分成几组,每次从各个组里取出两个来拉郎配。(这里不一定是两个,只是打个比方而已。)
map`map` 对一个可迭代对象中的每个元素应用同一个函数,返回结果的迭代器。就像流水线上的机器,每个产品经过机器时都被加工一次,最后得到加工后的产品。
filter`filter` 根据一个条件函数筛选可迭代对象中的元素,只保留函数返回 `True` 的元素。就像用筛子过滤沙子,只留下符合大小的沙粒。
open`open` 用来打开文件,返回一个文件对象,之后就可以读取文件内容或写入数据。就像你打开一个抽屉,然后从里面拿东西或者放东西进去。用完记得用 `close` 关上,否则别人无法再次打开。
isinstance`isinstance` 检查一个对象是否属于某个类型(或该类型的子类),返回布尔值(真或假)。就像测谎仪,检查一个人是不是说谎了,如果是就返回真,否则假。
super`super` 在子类中调用父类的方法或构造函数。就像孩子需要父母帮忙时,通过小天才儿童电话手表找到父母来解决问题。使用 `super` 可以避免显式写出父类名字,方便维护。
id`id` 返回对象在内存中的唯一地址标识。就像每个人都有唯一的身份证号码,虽然看不见摸不着,但能唯一标识这个人。地址是一个整数,每次程序运行可能不同。
chr`chr` 根据一个整数(Unicode 码点)返回对应的字符。就像上学时根据学号找到对应的学生名字。比如1号对应小明,2号对应小美,3号对应阿莫斯·米塞尔·弗朗西斯斯基。在代码里就比如数字 65 对应字母 'A',数字 97 对应 'a'。
ord`ord` 返回一个字符对应的 Unicode 码点(整数)。就像上学时根据学生名字查到他的编号。比如小明对应1号,小美对应2号,弗拉基米尔对应3号。在代码中则相当于字符 'A' 对应 65,'中' 对应 20013。
help`help` 查看函数、模块、类等的帮助文档。就像查字典或说明书,了解某个东西怎么用。千万不要理解为救命的意思!
dir列出一个对象有哪些属性和方法,不传参数时列出当前作用域的名字。
all`all(可迭代对象)` 判断可迭代对象中的所有元素是否都为真。如果所有元素都为真(或可迭代对象为空),返回 `True`;只要有一个元素为假,返回 `False`。就像是检查一个考察团的身份证明。如果所有证明都正确,就是真考察团,只要有一个身份证明是假,就是假考察团。
any`any(可迭代对象)` 判断可迭代对象中是否至少有一个元素为真。如果有任意一个元素为真,返回 `True`;如果所有元素为假或为空,返回 `False`。就像检查一排灯是否至少有一盏亮着。
ascii`ascii(对象)` 返回对象的可打印字符串表示,但会将非 ASCII 字符转义成 `\u`、`\x` 等形式。它类似于 `repr`,但更安全,适合输出只包含 ASCII 字符的文本。
bin`bin(整数)` 将整数转换成二进制字符串,以 `0b` 开头。就像把十进制数字翻译成二进制。
breakpoint`breakpoint()` 是一个内置函数,用于在代码中设置调试断点。当程序执行到这里时,会暂停并进入调试器(如 pdb),让你检查变量、单步执行等。就像在代码中放一个暂停按钮。
bytearray`bytearray` 是一个可变的字节数组,元素是 0~255 的整数。它和 `bytes` 类似,但可以修改内容。常用于处理二进制数据。
bytes`bytes` 是不可变的字节序列,类似字符串,但元素是 0~255 的整数。常用于处理二进制数据,比如读取文件、网络传输等。字符串可以通过 `encode` 转成 `bytes`,`bytes` 可以通过 `decode` 转回字符串。
callable`callable(对象)` 判断对象是否可以被调用(像函数一样),返回布尔值。比如函数、类、实现了 `__call__` 方法的对象都是可调用的。就像检查一个东西是不是按钮,可以按。
classmethod`classmethod` 是一个装饰器,用于定义类方法。类方法的第一个参数是类本身(通常命名为 `cls`),而不是实例。这意味着你可以通过类直接调用它,也可以通过实例调用,但它不能访问实例属性。常用于备选构造函数或需要操作类属性的场景。
compile`compile(源码, 文件名, 模式)` 将字符串形式的 Python 代码编译成代码对象,可以交给 `exec` 或 `eval` 执行。通常不需要手动编译,但在动态执行代码时可能会用到。
complex`complex(实部, 虚部)` 创建复数,也可以传入字符串。复数在科学和工程计算中很有用。
delattr`delattr(对象, '属性名')` 删除对象的某个属性,等价于 `del 对象.属性`。如果属性不存在会报错。
divmod`divmod(被除数, 除数)` 同时返回商和余数,以元组形式。相当于 `(被除数 // 除数, 被除数 % 除数)`。
eval`eval(表达式字符串)` 执行一个字符串形式的 Python 表达式,并返回结果。只能执行单个表达式,不能是语句。常用于动态计算数学表达式。
exec`exec(代码字符串)` 执行字符串形式的 Python 代码,可以包含多条语句,没有返回值。常用于动态执行代码。
frozenset`frozenset(可迭代对象)` 创建一个不可变的集合,创建后不能增删元素。因为不可变,所以可以作为字典的键或另一个集合的元素。
getattr`getattr(对象, '属性名', 默认值)` 获取对象的属性值。如果属性不存在,可以返回默认值,否则抛出 `AttributeError`。它允许动态访问属性。
globals`globals()` 返回当前全局作用域的字典,包含所有全局变量、函数、类等。修改这个字典会影响全局命名空间。
hasattr`hasattr(对象, '属性名')` 判断对象是否有某个属性,返回布尔值。它内部调用 `getattr` 并捕获异常。
hash`hash(对象)` 返回对象的哈希值(整数)。哈希值用于快速比较和字典键查找。不可变对象通常可哈希,可变对象(如列表、字典)不可哈希。
hex`hex(整数)` 将整数转换为十六进制字符串,以 `0x` 开头。就像把十进制翻译成十六进制。
iter`iter(可迭代对象)` 返回一个迭代器对象。迭代器可以逐个取出元素,用 `next()` 获取下一个元素。也可以传入一个可调用对象和哨兵值,持续调用直到返回哨兵。
locals`locals()` 返回当前局部作用域的字典,包含所有局部变量。在函数内调用时,返回该函数的局部变量;在模块级调用时,等同于 `globals()`。
memoryview`memoryview(字节类对象)` 创建一个内存视图对象,允许在不复制数据的情况下访问和操作内存中的二进制数据。常用于处理大型二进制数据,提高性能。
next`next(迭代器, 默认值)` 从迭代器中取出下一个元素。如果迭代器耗尽且提供了默认值,返回默认值;否则抛出 `StopIteration`。
object`object` 是所有类的基类,Python 中任何类都隐式继承自它。它是最基本的对象类型,可以创建最简单的实例,但通常作为基类使用。
oct`oct(整数)` 将整数转换为八进制字符串,以 `0o` 开头。就像把十进制翻译成八进制。
pow`pow(底数, 指数, 模数)` 计算幂,可以有三个参数。两个参数时等价于 `**` 运算符;三个参数时表示 `(底数 ** 指数) % 模数`,并且效率更高。
property`property` 是一个装饰器,用来把类的方法变成属性,这样访问属性时会自动调用方法。常用于控制属性的访问,比如只读属性、校验赋值等。
repr`repr(对象)` 返回对象的官方字符串表示,通常用于调试,力求准确无歧义。它调用对象的 `__repr__` 方法。对于字符串,会包含引号。
setattr`setattr(对象, '属性名', 值)` 设置对象的属性值,等价于 `对象.属性 = 值`。可以动态添加或修改属性。
slice`slice(开始, 结束, 步长)` 创建一个切片对象,表示一个范围。通常用于动态构建切片参数,然后应用于序列。
staticmethod`staticmethod` 是一个装饰器,定义静态方法。静态方法不需要 `self` 或 `cls` 参数,本质上就是一个普通的函数,只是放在类的命名空间里。可以通过类或实例调用。
vars`vars(对象)` 返回对象的 `__dict__` 属性,通常是对象的属性字典。如果不带参数,等价于 `locals()`。
__import__`__import__` 是 Python 内部使用的导入函数,`import` 语句最终会调用它。你可以直接使用它动态导入模块,但通常建议使用 `importlib.import_module`。
字符串方法
常用约定
self`self` 是类中方法的第一个参数,代表当前对象实例。类似于指代自己的一个称谓,比如我、吾、咱、咱家,这些指代的都是你自己。在类中,通过 `self` 可以访问和修改对象的属性。
__init__`__init__` 是类的构造函数,当你创建一个对象时,Python 自动调用它来初始化属性。就像新生儿出生时,医生立刻给他量体重、登记名字。每个对象出生时都要经过这一步,把初始数据填好。
__name__`__name__` 是一个内置变量,用来表示当前模块的名字。如果这个文件是被直接运行的,它的值就是 `'__main__'`;如果这个文件是被其他文件导入的,它的值就是模块名(文件名)。就像一个人在不同场合有不同的身份:在家是主人,在公司是员工。
__main__`__main__` 是一个特殊的字符串,当 Python 文件被直接运行时,模块的 `__name__` 变量会被设置为 `'__main__'`。就像当你住进一个无主的房子,就算上面不写,这里也会被默认成为你家。它常用来判断“这个文件是被直接运行,还是被其他文件导入”。
常用模块
math`math` 是 Python 的内置数学模块,提供各种数学函数和常量,比如平方根、三角函数、π 等。它像一个装满数学工具的箱子,要用什么数学工具就从里面拿。
random`random` 是 Python 的内置随机数模块,可以生成随机数、随机选择元素、打乱列表等。它像一个抽奖箱,你从里面随机抽取东西,结果不可预测。
os`os` 模块提供了与操作系统交互的功能,比如获取当前目录、创建文件夹、删除文件、读取环境变量等。它像一个万能遥控器,能控制操作系统的很多方面。
time`time` 模块用于处理时间相关的操作,比如获取当前时间戳、暂停程序执行、格式化时间等。它像一个智能化的钟,能告诉你现在几点、过了多久,还能让程序“睡觉”一段时间。
datetime`datetime` 模块用于处理日期和时间,比 `time` 模块更强大、更直观。它提供了日期、时间、日期时间、时间间隔等类型,方便进行日期运算和格式化。就像一个功能齐全的电子日历,能查日期、算天数、比较时间。
json`json` 模块用于处理 JSON 格式的数据。JSON 是一种文本格式,常用于数据交换(比如网站接口返回的数据)。`json` 模块可以把 Python 对象转成 JSON 字符串,也可以把 JSON 字符串转回 Python 对象。就像一个翻译官,在 Python 语言和 JSON 语言之间互译。记的话就记翻译官,人中痒痒的翻译官。
turtle`turtle` 是 Python 内置的绘图库,可以控制一只“小海龟”在屏幕上移动、转向、画线。它常用来教初学者编程,通过简单的命令画出各种图形。就像指挥一支画笔在纸上移动,你让它前进它就前进,你让它转弯它就转弯。这里注意,它不是只能画海龟!
re`re` 模块用于处理正则表达式,可以在文本中查找、匹配、替换符合特定模式的内容。就像给你一个“文字探测器”,你能定义一种规则(比如“找所有手机号”),然后用它去扫描一大段文字,把所有符合规则的内容找出来。查找、匹配、替换,耳熟吗?跟常用办公软件里的功能一样。
sys与 Python 解释器和系统打交道的工具包,可读取命令行参数、版本、退出程序等。
pathlib用面向对象的方式操作文件路径,比字符串拼接更安全。
collections提供额外的高阶容器类型,如计数器、默认字典、双端队列等。
itertools专门生成迭代器和排列组合的工具包。
functools给函数加功能的工具包,比如缓存结果、固定参数。
typing给代码加类型提示的标注工具,方便人和类型检查器阅读。
csv读写逗号分隔表格文件的工具。
pprint漂亮地打印复杂数据,自动缩进排版。
shutil高级文件操作,复制、移动、删除文件夹。
glob按通配符批量查找文件。
logging记录程序运行日志,比 print 更专业。
traceback抓取并打印详细的报错堆栈信息。
enum创建有限取值的有名字常量。
abc定义抽象基类,强制子类实现指定方法。
argparse解析命令行参数,给脚本做命令行交互界面。
dataclasses自动生成数据类的样板代码,少写 __init__。
sqlite3操作轻量级本地 SQLite 数据库,无需额外安装软件。
subprocess在 Python 里调用外部命令或程序。
threading让程序同时运行多个线程,适合 IO 等待型任务。
asyncio用协程写高并发程序,适合大量 IO 等待场景。
pickle把 Python 对象序列化成字节,或从字节恢复对象。
hashlib计算字符串或文件的哈希值,常用于校验和。
string提供字符串常量,如字母、数字、标点。
io在内存中模拟文件操作,无需创建真实文件。
platform查看操作系统和平台信息。
unittest内置单元测试框架,用来验证代码行为。
运算符
=`=` 用来把右边的值存到左边的变量里。就像给一个盒子贴标签,然后把东西放进盒子。左边是盒子(变量名),右边是要放进去的东西(值)。注意它不是数学里的“等于”,而是“赋值”。
==`==` 用来判断两个值是否相等,返回 `True` 或 `False`。就像拿两把尺子比长度,一样长就是真,不一样长就是假。它比较的是“值”,不是“身份”。
!= ≠用来判断两个值是否不相等,返回 `True` 或 `False`。就像问“这两个东西是不是不一样?”不一样就是真,一样就是假。它是 `==` 的反面。
<`<` 判断左边的值是否小于右边的值,返回布尔值。对于数字直接比较大小,对于字符串按字典序比较。
>`>` 判断左边的值是否大于右边的值,返回布尔值。
<=`≤` 判断左边的值是否小于或等于右边的值。就像问“我是不是和你一样高,或者比你矮?”只要满足一个就是真。它是一个包容性的比较。
>=`≥` 判断左边的值是否大于或等于右边的值。就像问“我是不是比你高,或者和你一样高?”满足一个就是真。
+`+` 有两种用法:对数字做加法,对字符串、列表、元组等序列做拼接。就像把两堆东西合在一起——数字相加得到总和,序列拼接得到更长的序列。
-`-` 对数字做减法。对于集合,还可以做差集运算。就像从一堆东西里拿走一部分,剩下多少。
*`*` 对数字做乘法,对序列(字符串、列表、元组)做重复。就像把同一段文字复制多份,或者把一组元素重复多次。
/`/` 做除法,结果总是浮点数(小数)。就像把一块蛋糕平均分成几份,每份是多少。不管被除数和除数是不是整数,结果都会带小数点。
//`//` 做除法但只保留整数部分,舍弃小数。就像把 7 个苹果分给 2 个人,每人得 3 个,剩下 1 个不要了。注意负数时是向下取整,不是向零取整。
%`%` 返回除法后的余数。就像分完东西后剩下几个。比如 7 个苹果分给 2 个人,每人 3 个,剩下 1 个,这个 1 就是余数。要注意,在代码里,它不是百分数!
**`**` 计算一个数的幂次方。就像把一个数连续乘自己若干次。例如 `2 ** 3` 就是 `2 * 2 * 2 = 8`。**前面是数字,后面是乘自己的次数。
+=`+=` 是“先加再赋值”的简写。就像你原来有 10 块钱,又赚了 5 块,现在变成 15 块。它把右边的值加到左边的变量上,然后更新左边的变量。
-=`-=` 是“先减再赋值”的简写。就像你原来有 10 块,花了 3 块,剩下 7 块。它把右边的值从左边的变量中减去,然后更新左边的变量。
*=`*=` 是“先乘再赋值”的简写。就像把原来的数值翻几倍,然后更新变量。
/=`/=` 是“先除再赋值”的简写。就像把原来的数值缩小几倍,然后更新变量。结果总是浮点数。
%=先取模,再把结果存回变量。
//=先向下取整除,再把结果存回变量。
**=先乘方,再把结果存回变量。
&=先按位与,再把结果存回变量。
|=先按位或,再把结果存回变量。
^=先按位异或,再把结果存回变量。
<<=先把二进制位向左移动,再把结果存回变量。
>>=先把二进制位向右移动,再把结果存回变量。
~按位取反,把整数的每个二进制位反过来。
<<把二进制位整体向左移,右边补零,相当于乘 2 的 n 次方。
>>把二进制位整体向右移,左边补符号位,相当于整除 2 的 n 次方。
&按位与:两个对应位都为 1,结果才为 1。
|按位或:两个对应位只要有一个为 1,结果就为 1。
^按位异或:两个对应位不一样,结果才为 1。
:=海象运算符:在表达式里赋值,同时把值参与后续运算。
符号
(左圆括号 `(` 单独出现时,主要用于三个场景:
1. **分组运算**:像数学里的括号,改变计算顺序。
2. **函数调用**:放在函数名后,里面写参数,表示执行这个函数。
3. **元组或表达式**:和右括号配合,里面放元素或表达式。单独看左括号,它是这些结构的开始标记。
)右圆括号 `)` 是左圆括号的配对符号,表示一个结构的结束。它单独不表示任何操作,必须和左括号一起使用。就像关门,和开门对应。
[左方括号 `[` 单独出现时,主要用于:
1. **创建列表**:里面放元素。
2. **索引访问**:放在序列后面,里面写索引。
3. **切片**:里面写起始、结束、步长。
4. **列表推导式**:一种快速生成列表的写法。
]右方括号 `]` 是左方括号的配对符号,表示列表、索引、切片等结构的结束。它不能单独使用。
{左花括号 `{` 单独出现时,主要用于:
1. **创建字典**:里面放键值对。
2. **创建集合**:里面放元素。
3. **字符串格式化占位**:配合 `format` 或 f-string 使用。
}右花括号 `}` 是左花括号的配对符号,表示字典、集合或格式化占位的结束。它不能单独使用。
:冒号 `:` 在 Python 中有三个主要作用:
1. 代码块开头:在 `if`、`for`、`while`、`def`、`class` 等语句后面加冒号,表示接下来是一个缩进的代码块。就像说“接下来我要开始一段新内容了,注意缩进”。
2. 切片:在方括号里用冒号分隔起始、结束、步长,比如 `列表[开始:结束:步长]`。
3. 字典键值对分隔:在字典里用冒号分隔键和值,比如 `{"名字": "小明"}`。
,逗号 `,` 用于分隔多个项目,比如多个变量、多个参数、列表/元组/字典中的元素等。就像列清单时每一项之间用逗号隔开。另外,逗号还可以用来创建元组——在 Python 中,元组实际上是由逗号决定的,括号只是可选的。
.点号 `.` 用于访问对象的属性或方法,或者表示浮点数的小数点。就像中文里的“的”,`对象.属性` 表示“对象的某个属性”,`对象.方法()` 表示“调用对象的方法”。在数字中,点号用来分隔整数和小数部分。
;分号 `;` 在 Python 中用于在一行内写多条语句。通常 Python 是每行一条语句,但如果你确实想在一行放多条简单语句,可以用分号分隔。不过,官方风格指南不推荐这样做,因为会降低可读性。
@`@` 是装饰器语法的一部分,放在函数或类定义之前,用来修改或增强其行为。装饰器本质上是一个函数,接收一个函数作为参数,并返回一个新的函数。就像给一个东西贴上标签,或者给它加一层包装,让它多了额外功能。
->`->` 是函数类型提示的一部分,用于标注函数的返回值类型。它不改变函数行为,只是给人或工具看,帮助理解代码。就像在函数定义时写“这个函数返回什么类型的值”。
_下划线 `_` 是一个普通的变量名,但在 Python 中有几个约定俗成的用法:
1. **表示“我不关心这个值”**:在循环或解包时,如果某个值不重要,可以用 `_` 接收。
2. **在交互环境中保存上一条命令的结果**。
3. **作为占位符**,比如定义空函数或类时,用 `_` 代替 `pass`(但通常用 `pass` 或 `...`)。
...省略号 `...` 是 Python 中的一个内置对象,类型是 `Ellipsis`。它通常用作占位符,表示“这里暂时省略”或“未实现”。在切片中,它可以表示所有维度(常用于 NumPy 等多维数组)。
\反斜杠 `\` 在 Python 中有两个主要用途:
1. **转义字符**:在字符串中,`\` 用于表示特殊字符,比如 `\n` 换行、`\t` 制表符、`\\` 反斜杠本身。
2. **行连接**:在一行代码末尾使用 `\`,可以让代码在下一行继续,通常用于很长的表达式。
字符串
字符串字符串是一串文字,用引号(单引号、双引号或三引号)括起来。它是程序处理文本的基本类型,可以包含字母、数字、符号等。字符串是不可变的,一旦创建就不能修改。
f-string
f-stringf-string(格式化字符串)是在字符串前加字母 `f`,然后在字符串内部用 `{}` 直接嵌入变量或表达式。它会自动把 `{}` 里的内容计算出来并转换成字符串,非常方便。就像填空:把变量值填到句子的空位里。
数字
数字数字是 Python 中的数值类型,包括整数(`int`)、浮点数(`float`)、复数(`complex`)。整数没有小数部分,浮点数有小数点,复数有实部和虚部。它们用于数学计算和逻辑判断。
注释
注释注释是给开发者看的说明文字,Python 解释器会忽略它。单行注释以 `#` 开头,多行注释通常用三引号字符串实现(虽然技术上不是注释,但常被用作注释)。注释用来解释代码的目的、逻辑或注意事项。
变量名
变量变量是存储数据的容器,有一个名字,可以在程序中多次使用和修改。就像给盒子贴标签,盒子里可以放不同的东西。变量名可以包含字母、数字、下划线,但不能以数字开头,也不能是关键字。
函数调用
函数调用函数调用就是使用函数,在函数名后加括号,传入参数,执行函数体内的代码,并可能返回结果。就像按下一个按钮,机器开始工作。
方法调用
方法方法是属于对象的函数,通过对象加点号调用,比如 `对象.方法()`。方法通常操作该对象的数据,有些会返回新值,有些会原地修改对象。就像给某个东西内置的功能,比如字符串有 `upper` 方法,列表有 `append` 方法。
属性
属性属性是对象存储的数据,通过 `对象.属性` 访问。就像对象的特征,比如人的名字、年龄。属性可以在类中定义,也可以动态添加。
缩进
缩进缩进是 Python 用来表示代码块的方式,通过行首的空格或制表符来表示代码的层级。同一代码块必须有相同的缩进。就像文章段落开头的空格,表示哪些内容属于同一段。在其他语言中通常用花括号 `{}`,而 Python 用缩进。
装饰器
装饰器装饰器是一种特殊函数,用来修改其他函数或类。它通常用 `@装饰器名` 放在函数或类定义前,本质上是把函数传递给装饰器,然后使用返回的新函数。就像给一个东西加一层包装,增强了它的功能,但不改变其核心。
运算符/符号
运算符运算符是执行计算或比较的符号,比如 `+`、`-`、`*`、`/`、`==`、`and` 等。它们用于连接操作数,产生结果。就像数学中的运算符号,是编程的基本元素。
bytes 方法
列表方法
字典方法
集合方法
文件方法
通用方法
pop从列表末尾或字典指定键取走元素并返回;原容器会少一个。
clear把列表、字典或集合里的内容全部清空。
index找出元素首次出现的位置;字符串和列表都能用。
count统计某个元素在字符串或列表里出现多少次。
copy给列表或字典做浅拷贝;嵌套对象要完全独立请用 copy.deepcopy。
update字典:把另一个字典的键值对合并进来,相同键的旧值会被覆盖;集合:把另一个可迭代对象的元素加进来,重复元素自动忽略。
remove从列表或集合里删除指定元素;不存在会报错。
特殊方法
特殊属性
模块功能
打开代码点读机,粘贴代码点词即查 →