python编程语言汇总-编程语言学习:python有趣用法汇总

用python过程中经常会不经意间遇到非常有趣的用法,于是特意搜集了一些。

lazy.png

有趣的用法

1.for-else用法

循环正常结束则执行else语句。一般用于循环找符合条件的元素,如果找到则break调出循环,不会触发else;如果没有找到(完整运行循环)则print not found

《Effictive Python》一书中对for-else用法提出了质疑,主要观点是可以通过封装成函数来取代这一用法,而封装成函数是更加通用易懂的做法,所以一般不会使用for-else用法。

2.try-else用法

如果没有触发异常就执行else

参考:https://eastlakeside.gitbooks.io/interpy-zh/content/exception/try_else_clause.html

3.解包用法

类似这样a,b,c = ["a’, "b’, "c’]

python有趣的解包用法:https://zhuanlan.zhihu.com/p/33896402

4.单行if-else

lazy.png

5.迭代器传入函数中不用加括号

lazy.png

7.or的用法

python中x or y表示如果x为真就是x的值,否则为y的值

我们会经常看到类似这样的用法(比如函数的一个value参数没有设置默认值,这样使用就允许它不赋值)

lazy.png

8.and的用法

python中x and y表示如果x是假,结果就是x的值,否则就是y的值

x and y and z多个and连接时,如果全是真结果就是最后一个的值;如果中间有假的值,结果就是第一个假的值

举一个例子

lazy.png

细细品味and和or的差别,他们逻辑类似,但是实现的功能是不可以相互替代的

or 是结果如果不满意有个善后工作

and是要做一件事之前先检验一下,不能做就不让它做

9.if value:

lazy.png

这里总结一下这种情况下什么时候是True,什么时候是False

False: 0 0.0 ” [] {} () set() None False

True:

" " "anything’ [”] [0] (None, )

没有内容的可迭代对象

另外要注意一点,我们用if判断一个对象是不是None的时候,要if a is None而不要直接if a,因为如果是后者,有非常多不是None的情况也会判定为False,比如空字符串、空列表等,为了精确指定None还是要用前者,这也是一种规范。

10.下划线的特殊使用

python中下划线是一种特殊的变量和符号,有一些特殊的用途

详见python中下划线的使用:https://zhuanlan.zhihu.com/p/33866181

11.文档字符串

python有一种独一无二的注释方式,在包、模块、函数、类中第一句,使用”’doc”’这样三引号注释,就可以在对象中用__doc__的方式提取

比较规范的写法是这样的(这里参考grequests模块的写法)

lazy.png

其实参数还有其他的写法,如numpy库的写法,可以看这里:https://python-guide.gitbooks.io/python-style-guide/content/style-guide/comment_and_docs.html

除此之外,函数注释还有另一种方式,函数名可以直接调用某个参数的注释,详见Python 的函数注释:https://segmentfault.com/a/1190000005173184

有用的函数

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循环索引

lazy.png

4.管道操作

func1(func2(func3(a)))写成类似a %>% func3 %>% func2 %>% func1,清晰展示函数执行的顺序,增强可读性

python本身不带有这样的用法,只是一些库提供了这样的用法,比如pandas和syntax_sugar

其他

另外,就是一些基础的

列表推导式

装饰器

生成器

map reduce filter

链式比较

类的魔术方法:https://zhuanlan.zhihu.com/p/31161355

学习代码规范可以参考下面资料

PEP8: https://www.python.org/dev/peps/pep-0008/

Python 代码、单元测试和项目规范:https://python-guide.gitbooks.io/python-style-guide/content/index.html

google开源项目风格指南:http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/contents/

更新补充

for-else的更多讨论

下面引用《Effictive Python》一书中内容

"

a = 4 b = 9

lazy.png

结尾:

lazy.png

总结起来就是for-else的优势是可以被写函数的方式替代的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值