我是一名java程序员,但现在进入了“Python的领域”,寻找一些Python更适合的东西。我敢肯定,对于Python程序员来说,我的代码中有很大一部分会看起来很奇怪(例如,在每个if上使用括号)。
我知道每种语言都有自己的惯例和一套“习惯”。那么,从可读性的角度来看,哪些约定和实践是Java中的“前进之路”,而不是真正的"pythonic方式“呢?
发布于 2010-05-20 08:16:29
这个问题没有简单的答案。让你的代码变成"Pythonic"是需要时间的。不要试图在Python中重新创建Java习惯用法。学习Python的习惯用法需要一些时间。
看看Code Like a Pythonista: Idiomatic Python,Style Guide for Python Code和Python for Java Programmers (archived)。
发布于 2010-05-20 11:23:05
雅各布·霍伦曾经观察到,最好的Python风格遵循Tufte对装饰的拒绝(尽管塔夫特的领域不是编程语言,而是信息的视觉显示):不要仅仅为了装饰而浪费“墨水”(像素)或“纸张”(空间)。
从这个原则可以得到很多东西:没有多余的括号,没有分号,在注释和文档字符串中没有愚蠢的"ascii框“,没有浪费的空间来”对齐“不同行上的东西,单引号,除非你特别需要双引号,没有\继续行,除非是强制的,没有注释只是提醒读者语言的规则(如果读者不知道你遇到麻烦的语言;-),等等。
我应该指出,在Python社区中,“Python的塔夫特精神”的一些后果比其他的更具争议性。但是语言确实很尊重“塔夫特的精神”。
转向“更具争议性”(但得到了Python的Zen -- import this在解释器提示符处的认可):“平面比嵌套好”,所以“明智地尽快离开”而不是嵌套。让我解释一下:
if foo:
return bar
else:
baz = fie(fum)
return baz + blab这并不可怕,但也不是最优的:因为“”返回‘’,所以您可以保存嵌套:
if foo:
return bar
baz = fie(fum)
return baz + blab一个更敏锐的例子:
for item in container:
if interesting(item):
dothis(item)
dothat(item)
theother(item)这个大的块是双重嵌套的,这并不整洁...考虑一下更平坦的风格:
for item in container:
if not interesting(item):
continue
dothis(item)
dothat(item)
theother(item)顺便说一句,顺便说一句,这不是Python独有的风格--这是我最讨厌的问题之一(在任何语言中,除了Python Tufte的精神支持我;-):
if not something:
this()
that()
theother()
else:
blih()
bluh()
blah()"if not ... else“是扭曲的!交换这两个部分,就会失去not
if something:
blih()
bluh()
blah()
else:
this()
that()
theother()发布于 2010-05-20 08:18:57
最好的起点可能是PEP-8,这是官方的Python风格指南。它涵盖了许多被认为是标准的基础知识。
https://stackoverflow.com/questions/2870292
复制相似问题