Python 函数调用的PEP-8
我最近开始使用Python/Django,我听说了PEP8约定。读完之后,我对如何“风格化”我的代码有了更好的理解,但我学会了用Java编程,我过去喜欢做什么就做什么。你能建议如何把我的例子写进PEP-8吗?非常感谢Python 函数调用的PEP-8,python,conventions,pep8,code-conversion,Python,Conventions,Pep8,Code Conversion,我最近开始使用Python/Django,我听说了PEP8约定。读完之后,我对如何“风格化”我的代码有了更好的理解,但我学会了用Java编程,我过去喜欢做什么就做什么。你能建议如何把我的例子写进PEP-8吗?非常感谢 result = urllib.urlretrieve( "https://secure.gravatar.com/avatar.php?"+ urllib.urlenc
result = urllib.urlretrieve(
"https://secure.gravatar.com/avatar.php?"+
urllib.urlencode({
'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)
})
)
这可能不是PEP8建议的,但为了可读性,您可以将其分解如下:
base = "https://secure.gravatar.com/avatar.php?"
params = urllib.urlencode({'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)})
result = urllib.urlretrieve(base+params)
result = urllib.urlretrieve(
"https://secure.gravatar.com/avatar.php?" +
urllib.urlencode({
'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)
})
)
请注意,这是一个用于格式化Python代码以符合PEP8的实用程序。在本例中,它将原始代码转换为
result = urllib.urlretrieve(
"https://secure.gravatar.com/avatar.php?" +
urllib.urlencode({
'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)
})
)
尝试下载代码样式的linter,如pep8(一个检查代码是否符合pep8要求的程序)或pylint。您可以在此处找到更全面的Python风格检查器列表和比较: 事实上,网上有一个pep8检查器: 如果我们运行您的代码,它会告诉您:
Code Line Column Text
E126 2 29 continuation line over-indented for hanging indent
E225 2 70 missing whitespace around operator
E126 4 45 continuation line over-indented for hanging indent
E501 4 80 line too long (90 > 79 characters)
W292 7 30 no newline at end of file
代码的固定版本看起来更像这样:
base = "https://secure.gravatar.com/avatar.php?"
params = urllib.urlencode({'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)})
result = urllib.urlretrieve(base+params)
result = urllib.urlretrieve(
"https://secure.gravatar.com/avatar.php?" +
urllib.urlencode({
'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)
})
)
从本质上讲,你违反PEP8的主要原因是你缩进太多。一个缩进就可以了——您不需要与函数调用的开头部分对齐。Python还坚持您的行不超过80个字符,但修复过度缩进也解决了这个问题。使用更多变量。不仅行更容易阅读,完整的代码也更容易理解:
base = "https://secure.gravatar.com/avatar.php"
params = urllib.urlencode({'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)})
url = "{}?{}".format(base, params)
result = urllib.urlretrieve(url)
这个问题似乎离题了,因为它是关于codereview.stackexchange.commhh的,我认为这是一个特定的编程问题,但我是这个论坛的新手,所以我想你有理由暂停这个帖子。不管怎样,我得到了我一直在寻找的答案。非常感谢。我还发现自己很困惑一个问题是属于这里,还是属于codereview或in,后者对我来说与StackOverflow的目的几乎相同…删除了我的答案-因为你抢先给了我答案并包含了信息。关于棋盘格…我在开始排列后使用换行符的唯一原因是,如果不这样做,换行符会太长,然后将其缩进到原来的列中并没有多大帮助。。。