Python小技巧-解冻参数-让你的代码繁复明了 (python怎样打开)
/target=_blankclass=infotextkey>Python有一些十分经常使用的模块,functools就是其中之一。当天咱们来说说其中的partial函数,partial函数看起来平平无奇,假设你经常翻看高手们写的库,会发现很多中央都在经常使用这函数。
入门
咱们从一个小场景开局。
如今咱们须要读取一个txt文件:
withopen('文件1.txt',mode='r',encoding='utf8')asf:print(f.readline())
假设同时加载2个文件:
withopen('文件1.txt',mode='r',encoding='utf8')asf:print(f.readline())withopen('文件2.txt',mode='r',encoding='utf8')asf:print(f.readline())
初学者都能看进去,这代码很多重复的内容,怎样简化?
形式1:
defmy_open_file(file):returnopen(file,mode='r',encoding='utf8')withmy_open_file('文件1.txt')asf:print(f.readline())withmy_open_file('文件2.txt')asf:print(f.readline())
思绪很便捷,把重复的函数整个提到自定义函数外面,把变动的文件门路定义成参数。
形式2:
open_kws={'mode':'r','encoding':'utf8'}withopen('文件1.txt',**open_kws)asf:print(f.readline())withopen('文件2.txt',**open_kws)asf:print(f.readline())
应用python的字典解包入参,从参数上提取。
这些形式都略显费事。
形式2有其运行场景,以后再开展解说
解冻参数
"出场仪式"还是须要的:
fromfunctoolsimportpartial
相似前面的形式1,partial函数提供了一个更繁复的形式
my_open_file=partial(open,mode='r',encoding='utf8')withmy_open_file('文件1.txt')asf:print(f.readline())withmy_open_file('文件2.txt')asf:print(f.readline())
下面咱们经常使用关键字设置参数,当然也可以按位置传入参数,或许混合经常使用。
defshow_nums(a,b,c):print(a,b,c)show_free_c=partial(show_nums,1,2)show_free_c(3)#>>>123show_free_b=partial(show_nums,1,c=3)show_free_b(2)#>>>123
接上去就要说说partial的小缺陷。
不是函数
partial生成的是一个partial对象,他不是函数对象,这象征着它生成进去的物品失落了函数说明。
如今为之前例子中的函数加上一些注释:
可以看到在vscode上可以反常显示消息。但是经过partial获取的新函数却什么都看不到:
所以普通状况下,咱们都是在一个部分小范围内经常使用partial,比如在自定义模块外部经常使用,尽或许防止让partial生成的对象供外部的调用者间接经常使用。
满满干货!20个Python使用的小技巧
本节对一些 Python 易混淆的操作进行对比。
1.1 有放回随机采样和无放回随机采样
1.2 lambda 函数的参数
1.3 copy 和 deepcopy
复制和变量别名结合在一起时,容易混淆:
对别名的修改会影响原变量,(浅)复制中的元素是原列表中元素的别名,而深层复制是递归地进行复制,对深层复制的修改不影响原变量。
1.4 == 和 is
1.5 判断类型
1.6 字符串搜索
1.7 List 后向索引
这个只是习惯问题,前向索引时下标从0开始,如果反向索引也想从0开始可以使用~。
2.1 读写 CSV 文件
注意,当 CSV 文件过大时会报错:_: field larger than field limit (),通过修改上限解决
csv 还可以读以 分割的数据
2.2 迭代器工具
itertools 重新定义了很多迭代器工具,例如子序列工具:
序列排序:
多个序列合并:
2.3 计数器
计数器可以统计一个可迭代对象中每个元素出现的次数。
2.4 带默认值的 Dict
当访问不存在的 Key 时,defaultdict 会将其设置为某个默认值。
2.5 有序 Dict
3.1 输出错误和警告信息
向标准错误输出信息
输出警告信息
控制警告消息的输出
3.2 代码中测试
有时为了调试,我们想在代码中加一些代码,通常是一些 print 语句,可以写为:
一旦调试结束,通过在命令行执行 -O 选项,会忽略这部分代码:
3.3 代码风格检查
使用 pylint 可以进行不少的代码风格和语法检查,能在运行之前发现一些错误
3.4 代码耗时
耗时测试
测试某代码块耗时
代码耗时优化的一些原则
4.1 argmin 和 argmax
argmax同理。
4.2 转置二维列表
4.3 一维列表展开为二维列表
大神和小白都在用的Pychram小技巧,让你告别低效率工作
大家用学python用的最大的编辑器应该是Pychram,在这我分享几个在学习和工作中最常用的Pychram小技巧。
经常听人说,多看源码。源码不仅能帮我们搞清楚运行机制,还能学习优秀的库或者框架的最佳实践。
调用库时,可以点击你不了解的地方,然后 Ctrl+B ,就会直接跳转到源码里的类,方法,函数,变量的定义,能让我们快速了解到有关这个库的知识。
PEP8 是针对Python语言编订的代码风格指南。写 Python 代码时,尽管我们可以在保证语法没有问题的前提下随意书写Python代码,但是在实际开发中,采用一致的风格书写出可读性强的代码是每个专业的程序员应该做到的事情。
尤其是要上传到GitHub这样的一些平台上去的,但是靠肉眼去检查和注意的话,对我们来说太麻烦,所以直接在Pychram里面 Ctrl + Alt + L一键 PEP 规范。
像安装库我们一般是用黑窗口 pip install 命令安装,如果你是新手,可能会为了安装库而感到烦恼,在 PyCharm 里面可以使用你熟悉的图形化界面来安装库,就是 在 File 菜单 Settings里安装 ,就不用陷在一堆命令行里了。
当我们需要在项目中寻找一个文件名的时候,按下Ctrl + Shift + N (Mac:Command + Shift + O),然后输入你想查找的文件名就可以了。如果你不记得全名了,只需要输入首字母,Pycharm 就会提示你。
你会怎么快速注释一段 Python 代码块?不会是一行一行的加 # 吧……
有时候需要输入很长的代码,比如 if __ name __ == __ main __ : ,这时候手动输入不如直接 Ctrl + J ,就可以直接插入常用代码了。
运行代码、调试代码应该是大多数人最常用的快捷键。
Control + r :直接运行当前代码
Control + d :以Debug(调试)模式运行代码
Windows/Linux:
Shift + F10 :直接运行当前代码
S hift + F9 :以Debug(调试)模式运行代码
在写前端页面的时候,经常要更改一大段代码的缩进,这时候可以先用Shift + 上下键来选择你要缩进的代码块,然后使用 Tab 就能缩进。
当项目写到一定规模的时候,难免方法/函数会很多,这个时候我们可以使用Ctrl + +/- 代码块展开/折叠代码,这个主要是为了方便查看。
当年需要查看多个代码文件,你依然可以使用 PyCharm 在一个屏幕里查看多个文件。鼠标放到当前导航处的文件名,然后右击,选择 Split Right 或者 Split down 就可以。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。