Java程序员的Python可读性提示

Sam*_*ijo 9 python java readability conventions

我是一名java程序员,但现在进入"python领域"的一些东西,Python更好用.我非常确定我的代码的很大一部分对于Python程序员来说看起来很奇怪(例如,在每个if上都使用括号).

我知道每种语言都有自己的惯例和一套"习惯".因此,从可读性的角度来看,什么是Java中"走的路"的约定和实践,但实际上并不是"pythonic方式"?

cle*_*tus 8

这个问题没有简单的答案.您的代码需要一段时间才能成为"Pythonic".不要尝试在Python中重新创建Java习语.学习Python习语只需要时间.

看看像Python一样的代码:惯用的Python,Python代码的样式指南Java程序员的Python(已存档).

  • 我第二个代码像Pythonista. (4认同)
  • 而"Python不是Java".http://dirtsimple.org/2004/12/python-is-not-java.html (2认同)

Ale*_*lli 5

JacobHallén曾经观察到最好的Python风格遵循Tufte对装饰的拒绝(尽管Tufte的领域不是编程语言,而是视觉显示信息):不要浪费"墨水"(像素)或"纸张"(空间)单纯的装饰.

从这个原则可以看出很多:没有多余的括号,没有分号,评论和文档字符串中没有愚蠢的"ascii框",没有浪费空间来"对齐"不同行上的东西,单引号除非你特别需要双引号,没有\继续除了必要时,没有任何评论只是提醒读者语言的规则(如果读者不知道你遇到麻烦的语言;-),等等.

我应该指出,在Python社区中,"Tufte精神的Python"的一些后果比其他人更具争议性.但语言确实很尊重"Tufte的精神"......

转向"更具争议性"(但在禅宗的Python下 - import this在翻译提示下):"扁平比嵌套更好",所以"尽快出去"而不是嵌套.让我解释:

if foo:
  return bar
else:
  baz = fie(fum)
  return baz + blab
Run Code Online (Sandbox Code Playgroud)

这并不可怕,但也不是最优的:因为"返回"``走出'',你可以保存嵌套:

if foo:
  return bar
baz = fie(fum)
return baz + blab
Run Code Online (Sandbox Code Playgroud)

一个更清晰的例子:

for item in container:
  if interesting(item):
    dothis(item)
    dothat(item)
    theother(item)
Run Code Online (Sandbox Code Playgroud)

双嵌套的大块不整齐......考虑更扁平的风格:

for item in container:
  if not interesting(item):
    continue
  dothis(item)
  dothat(item)
  theother(item)
Run Code Online (Sandbox Code Playgroud)

顺便说一下,除了特别是Python独有的风格之外 - 我的宠儿之一(用任何语言,但在Python Tufte's Spirit支持我;-):

if not something:
  this()
  that()
  theother()
else:
  blih()
  bluh()
  blah()
Run Code Online (Sandbox Code Playgroud)

"如果不是......别的"是扭曲的!交换两半并失去not:

if something:
  blih()
  bluh()
  blah()
else:
  this()
  that()
  theother()
Run Code Online (Sandbox Code Playgroud)

  • 弄清楚是否在函数中途"返回"一个值或使用"else"语句通常会让我陷入犹豫不决的瘫痪状态...... (4认同)