Python 中一共有33个关键字,本文介绍一些不常用的关键字. Python 中也使用了大量的语法糖, 掌握后写代码时可以更加便捷.
with关键字
with语句在Python中可以实现上下文管理协议。写法较try-catch-finally更加简洁。
1 | with context [as var] |
with语句定义了一个上下文. 执行 with 语句时, 首先调用上下文对象 context 的 enter(), 其返回值赋值给 var; 离开 with 语句块时, 最后调用 context 的 exit(), 确保释放资源.
下面的例子是一个为文本添加行号并打印的程序:
1 | import sys |
del
Python中的 del
关键字与 C++ 的 delete 并不一样.
由于 Python 中所有的变量都是引用, 所以 del
关键字只是删除了引用的变量名, 并没有删除数据真正占据的内存空间. 比如:
1 | a = 1 |
这时候, 1的内存空间并未被释放, b 仍然指向 1. 所以可以使用 print(b)
打印出来结果是1.
yield
yield 关键字用于产生一个迭代器.
定义一个迭代器函数iterfun, 需要将其中return替换为yield.
调用时的写法 for i in iterfun():
https://liam0205.me/2017/06/30/understanding-yield-in-python/
倒序索引
定义了一个数组 a
. a[0]
表示正序第一个元素, a[-1]
表示倒序第一个元素.
列表解析表达式
列表解析表达式用于遍历 for 循环结果
1 | signal = [fun(x) for x in range(10)] |
举例
1 | >>> [i**2 for i in range(10)] # 平方值 |
函数参数类型检查
类似 C/C++/Java 在进行函数调用时都会有严格的函数参数类型检查. 在 Python 3.5
以后也加入了函数类型审查机制, 建议以后写函数时加上. 比如
1 | def addint(num1: int, num2: int = 5): |
编译器会在最后一行报错.
对于有些类型, 不太好限定数据类型, 但是可以使用字符串进行注释表达意思
1 | def test_fun(end: "in ['pad', 'cut', None]" = 'cut'): |
这个函数提示我们参数应该为 ‘pad’, ‘cut’, 或者不填, 默认参数是’cut’. 但是如果参数不在这些范围之内, 函数也能运行, 并且在目前的版本里不会报错.
评论
shortname
for Disqus. Please set it in_config.yml
.