有人说,处理文件的时候用 try except ,那很不 pythonic,用 context manager 就很好 例如:
try:
with open('D:\nothing_here.exe') as fd:
# do something here
except Exception as error:
#handle error
也有人说 for 循环里写 if 也很不 pythonic ,应该用列表推导。我就想听听大家的意见
1
kutata 2017-01-12 16:30:40 +08:00
最近有个项目需要用到 python ,原来这写到一列的代码叫做列表推导,酷炫!😂
|
2
gimp 2017-01-12 16:42:25 +08:00
在 python 控制台中输入 import this ,就会输出 python 之禅
个人理解就是使用 python 的特性使得代码更加的高效,简洁,可读 |
3
introom 2017-01-12 16:47:23 +08:00 via Android 1
你能跑,别人看得懂就行了
|
4
gouchaoer 2017-01-12 16:48:35 +08:00 2
不兼容,低性能, list comprehension+list slicing+参数缺乏类型甚至鼓励忽略类型的写法+第三方库缺乏 typehint 等导致读不懂,编码灾难,第三方库都统一安装到全局 py 二进制,游标卡尺,没有办法格式化代码
|
6
gouchaoer 2017-01-12 16:49:42 +08:00
啥是 pythonic , guido 去 google 还得学怎么写规范的大家能读懂的 python 编码风格
|
9
octopus_new 2017-01-12 17:19:26 +08:00 1
如果你认同在 production 代码中去掉不必要 try except , context manager 就是更好的选择
"也有人说 for 循环里写 if 也很不 pythonic ,应该用列表推导", 个人认为这个可能要分情况吧, list comprehension 目的是生成 list ,如果 for 循环的目的不是生成 list ,那么还需要用到 list comprehension 么?难道 for 都需要写成 list comprehension 才算 pythonic... 更不用说其中是否包含 if. 而且 list comprehension 的性能也是在生成 list 的时候才比一般的 for loop 更快,如果不生成 list 那么 list comprehension 的性能是比 for loop 更差一些。 当然最重要的一点是,如果工作在一个团队中,代码是需要容易理解的,追求风格之类的考虑很难说是重要的. 其实 pythonic 这种提法,我个人认为是为了让大家"正确"使用 python ,使用 python 中最优的解决方法,如果你越接受这种"正确"的解决方法,那么你就越 pythonic ,是这么个意思吧? |
10
spice630 2017-01-12 17:25:26 +08:00
你用 golang 就不会出现这么无用的问题了
|
12
gladuo 2017-01-12 17:32:50 +08:00 2
|
13
phrack 2017-01-12 18:17:15 +08:00 via Android
总结起来还真不好说,可能结合几个例子会合适点。我自己感觉的话就是,一个算法的几个代码实现中比较简洁又不会过于依赖语法糖导致难懂的那个。
|
14
hahastudio 2017-01-12 18:24:56 +08:00
能用原生语法、标准库的,就用那些
|