使用python过程中经常会不经意间遇到非常有趣的用法,于是特意搜集了一些
有趣的用法
1.for-else用法
循环正常结束则执行else语句。一般用于循环找符合条件的元素,如果找到则 break 调出循环,不会触发 else ;如果没有找到(完整运行循环)则 print not found
《Effictive Python》一书中对for-else用法提出了质疑,主要观点是可以通过封装成函数来取代这一用法,而封装成函数是更加通用易懂的做法,所以一般不会使用for-else用法。
2.try-else用法
如果没有触发异常就执行 else
参考这里
3.解包用法
类似这样 a,b,c = ['a', 'b', 'c']
python有趣的解包用法
4.单行if-else
5.迭代器传入函数中不用加括号
7.or的用法
python中 x or y 表示如果x为真就是x的值,否则为y的值
我们会经常看到类似这样的用法(比如函数的一个 value 参数没有设置默认值,这样使用就允许它不赋值)
8.and的用法
python中 x and y 表示如果x是假,结果就是x的值,否则就是y的值
x and y and z 多个and连接时,如果全是真结果就是最后一个的值;如果中间有假的值,结果就是第一个假的值
举一个例子
细细品味and和or的差别,他们逻辑类似,但是实现的功能是不可以相互替代的
or 是结果如果不满意有个善后工作
and是要做一件事之前先检验一下,不能做就不让它做
9.if value:
这里总结一下这种情况下什么时候是 True ,什么时候是 False
False: 0 0.0 '' [] {} () set() None False
True:
' ' 'anything' [''] [] (None, )
另外要注意一点,我们用 if 判断一个对象是不是 None 的时候,要 if a is None 而不要直接 if a ,因为如果是后者,有非常多不是 None 的情况也会判定为 False ,比如空字符串、空列表等,为了精确指定 None 还是要用前者,这也是一种规范。
10.下划线的特殊使用
python中下划线是一种特殊的变量和符号,有一些特殊的用途
详见python中下划线的使用
11.文档字符串
python有一种独一无二的注释方式,在包、模块、函数、类中第一句,使用 '''doc''' 这样三引号注释,就可以在对象中用 __doc__ 的方式提取
比较规范的写法是这样的(这里参考 grequests 模块的写法)
其实参数还有其他的写法,如 numpy 库的写法,可以看这里
除此之外,函数注释还有另一种方式,函数名可以直接调用某个参数的注释,详见Python 的函数注释。还可以参考PEP 257
有用的函数
1.sum的本质
本质: sum(iterable, start=0) 将可迭代对象使用 + 连接
所以 sum([[1,2],[3,4]], []) 返回结果为 [1, 2, 3, 4]
2.range(start, stop[, step])
可以直接用 for i in range(10, 0, -1) 降序循环
3.enumerate循环索引
4.管道操作
func1(func2(func3(a)))写成类似a %>% func3 %>% func2 %>% func1,清晰展示函数执行的顺序,增强可读性
python本身不带有这样的用法,只是一些库提供了这样的用法,比如pandas和syntax_sugar
其他
另外,就是一些基础的
列表推导式
装饰器
生成器
map reduce filter
链式比较
类的魔术方法
更新补充
for-else的更多讨论
下面引用《Effictive Python》一书中内容
随后作者写到:
结尾:
总结起来就是for-else的优势是可以被写函数的方式替代的.
如果有任何疑问,欢迎添加qq群测试入门到大神 755431660 共同学习~
领取专属 10元无门槛券
私享最新 技术干货