18 种方法来优雅你的 Python

FightingCoder

共 1760字,需浏览 4分钟

 ·

2019-07-30 08:13

Python 讲求的一个目标就是 Pythonic,很多情况下我们会追求 Python 的代码更加优雅的写法。这里分享一篇文章,这里列举了非常全面的方法来优雅 Python 的写法,大家不妨试着用一用。

转载来源

公众号:Python 与算法之美

阅读本文大概需要 5 分钟。


一,优雅你的 Jupyter


1,更改 Jupyter Notebook 初始工作路径


平凡方法:

在cmd中输入jupyter notebook --generate-config,然后找到生成的配置文件 jupyter_notebook_config.py,在其中加入一条语句:


c.NotebookApp.notebook_dir =

 'F:我的坚果云PythonFiles' 


优雅方法:

新建文本文件,在其中输入以下内容:


F:

cd F:我的坚果云PythonFiles

jupyter notebook

pause


保存后将文件重命名为 jupyter.cmd,双击该文件即可。


90ef8e4477400de72e81bb5e6c83ecb1.webp


2,获取函数帮助


平凡方法:

help()。

7cf4ea00214b73ca9b0022bcf1d6d13d.webp

优雅方法:

光标移动至函数名右侧(或选中函数名),按住 Shift + Tab 键弹出帮助文本框。


4f47b553ca365e39f70a0784465b8de9.webp


3,修改多处的同一标识符名字


平凡方法:

逐个修改。


优雅方法:

按住 Ctrl 鼠标移动光标同时选中多处编辑位置,启动多行编辑。


2f85795c36345b5455d3d2eeea259afe.webp



二,优雅你的赋值语句


4,为多个变量赋值


平凡方法:

逐一赋值。


61b2d75765873f011195f7568369e1a0.webp


优雅方法:

使用元组语法同时赋值。


5ef1526e6ce19decbcf2c17cf9d83e1b.webp


5,序列解包


平凡方法:

使用下标访问逐一赋值。


e323208f55ce2b97b5a763fc7af27fed.webp


优雅方法:

序列自动解包。

0b48b9b0f8b191b7cd12923d5ad954ff.webp



6,对象方法的嵌套


平凡方法:

定义中间变量,不嵌套。


238adb7440c0e52ca8c67b59340ff99c.webp


优雅方法:

使用对象方法嵌套,减少中间变量。


8302194790e127681c4a759d9c94784c.webp


三,优雅你的判断语句


7,单行 if 语句:if...else... 三目运算符


平凡方法:

使用普通需要换行的 if...else... 语句。


c2e5d434a384d200f29910b8b9445c2b.webp

优雅方法:

使用单行 if 语句:if...else... 三目运算符。


786b9029f8e0acb8db081f57aff4f8f6.webp

8,区间判断


平凡方法:

使用 and 连接两次判断。


d10dc311ed0368752d780b0a163d3e9b.webp


优雅方法:

使用链式判断。

e1556702c15d36f7869a3a784bd21b90.webp

9,判断是否为多个取值之一


平凡方法:

使用 or 连接多次相等判断。


a69a13faf9691729bb43e00d97e581d0.webp



优雅方法:

使用关键字 in


198f10dec4113d20c9b8c0099c6b0e5f.webp


10,判断是否为空列表,空字典,空字符串


平凡方法:

使用 len 函数判断长度是否大于 0。


5cedf968aff3c6417133577306593b48.webp


优雅方法:

利用隐含类型转换直接判断


6f495408cb6bbf39c27edc9fc532938e.webp


11,判断诸多条件是否至少有一个成立


平凡方法:

使用 or 连接多次判断。


21a345c5926e16e52e5fdb43b5fdaec8.webp


优雅方法:

使用 any 函数。


3d5317bb79a2e57500d698343d39903d.webp


12,判断诸多条件是否全部成立


平凡方法:

使用 and 连接多次判断。


fe0d5d5e749448f3b52e991f249c1cc0.webp


优雅方法:

使用 all 函数。


0e9851426f65b629110c0ee5db623ab8.webp


四,优雅你的循环语句


13,单行循环语句:推导式


平凡方法:

使用普通 for 循环。


03b573af65862eb6544c393df27885c5.webp

优雅方法:

使用推导式:[... for .... in ... if ... ]。


e38b79e321fe98515e78b2553c38fc21.webp


14,同时遍历序列的元素和元素下标


平凡方法:

遍历下标,并用下标访问元素。


883070fb21dec4a426529c31d44aef27.webp

优雅方法:

使用 enumerate 函数生成下标和元素对。


a67584042fea25349bd178837927b6c6.webp


15,显示循环进度


平凡方法:

直接不断 print 下标。该方法容易导致输出刷屏。


d461f21b07f05079d285654d3a4727cf.webp


优雅方法:

print 下标后设置不换行并使用‘ ’回车到行首以避免输出刷屏。


69baa067035ae57fea2c2dd7f4ee527f.webp


优雅方法加强版:

定义 progress_bar 函数,直观显示进度条。


e4c4742eb2643e28485d588aeb2810a0.webp



五,优雅你的函数


16,使用 lambda 匿名函数实现简单的函数


平凡方法:

使用 def 关键字定义函数。


17c6fa9633c06fc40f3fe45e133e85f6.webp


优雅方法:

使用 lambda 匿名函数。


debb525a1d10383487d47ce4eca40777.webp


17,使用 yield 生成器收集系列值


平凡方法:

在函数中直接用列表收集系列值。


5f5b6f8613aa586157fe380c29c2d349.webp



优雅方法:

使用 yield 生成器收集系列值。生成器具有惰性计算特点,被迭代才逐个计算输出值。


6144e4d1d5bedb25474604f84edef225.webp


18,使用装饰器给函数添加插入日志,性能测试等非核心功能


平凡方法:

将插入日志,性能测试等非核心功能直接内嵌到函数定义中。


18506625e8d63d06c71d6877823595f4.webp


优雅方法:

使用装饰器扩展函数的非核心功能。装饰器函数可以一次定义,到处装饰。


6c828378e3b01218c850bf5ee81e975f.webp



推荐阅读

1

跟繁琐的命令行说拜拜!Gerapy分布式爬虫管理框架来袭!

2

跟繁琐的模型说拜拜!深度学习脚手架 ModelZoo 来袭!

3

只会用Selenium爬网页?Appium爬App了解一下

4

妈妈再也不用担心爬虫被封号了!手把手教你搭建Cookies池

崔庆才

静觅博客博主,《Python3网络爬虫开发实战》作者

隐形字

个人公众号:进击的Coder

3f6ab1be334a9917c5c489da4773fe92.webpbabe21715b3f3d61b0057a751eb0348b.webp

长按识别二维码关注


好文和朋友一起看~
浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报