首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对Java程序员的Python可读性提示

针对Java程序员的Python可读性提示
EN

Stack Overflow用户
提问于 2010-05-20 08:13:30
回答 6查看 895关注 0票数 9

我是一名java程序员,但现在进入了“Python的领域”,寻找一些Python更适合的东西。我敢肯定,对于Python程序员来说,我的代码中有很大一部分会看起来很奇怪(例如,在每个if上使用括号)。

我知道每种语言都有自己的惯例和一套“习惯”。那么,从可读性的角度来看,哪些约定和实践是Java中的“前进之路”,而不是真正的"pythonic方式“呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-05-20 08:16:29

这个问题没有简单的答案。让你的代码变成"Pythonic"是需要时间的。不要试图在Python中重新创建Java习惯用法。学习Python的习惯用法需要一些时间。

看看Code Like a Pythonista: Idiomatic PythonStyle Guide for Python CodePython for Java Programmers (archived)

票数 8
EN

Stack Overflow用户

发布于 2010-05-20 11:23:05

雅各布·霍伦曾经观察到,最好的Python风格遵循Tufte对装饰的拒绝(尽管塔夫特的领域不是编程语言,而是信息的视觉显示):不要仅仅为了装饰而浪费“墨水”(像素)或“纸张”(空间)。

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

我应该指出,在Python社区中,“Python的塔夫特精神”的一些后果比其他的更具争议性。但是语言确实很尊重“塔夫特的精神”。

转向“更具争议性”(但得到了Python的Zen -- import this在解释器提示符处的认可):“平面比嵌套好”,所以“明智地尽快离开”而不是嵌套。让我解释一下:

代码语言:javascript
复制
if foo:
  return bar
else:
  baz = fie(fum)
  return baz + blab

这并不可怕,但也不是最优的:因为“”返回‘’,所以您可以保存嵌套:

代码语言:javascript
复制
if foo:
  return bar
baz = fie(fum)
return baz + blab

一个更敏锐的例子:

代码语言:javascript
复制
for item in container:
  if interesting(item):
    dothis(item)
    dothat(item)
    theother(item)

这个大的块是双重嵌套的,这并不整洁...考虑一下更平坦的风格:

代码语言:javascript
复制
for item in container:
  if not interesting(item):
    continue
  dothis(item)
  dothat(item)
  theother(item)

顺便说一句,顺便说一句,这不是Python独有的风格--这是我最讨厌的问题之一(在任何语言中,除了Python Tufte的精神支持我;-):

代码语言:javascript
复制
if not something:
  this()
  that()
  theother()
else:
  blih()
  bluh()
  blah()

"if not ... else“是扭曲的!交换这两个部分,就会失去not

代码语言:javascript
复制
if something:
  blih()
  bluh()
  blah()
else:
  this()
  that()
  theother()
票数 5
EN

Stack Overflow用户

发布于 2010-05-20 08:18:57

最好的起点可能是PEP-8,这是官方的Python风格指南。它涵盖了许多被认为是标准的基础知识。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2870292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档