我最近开始使用Python / Django,我听说过PEP 8惯例。阅读PEP8后,我对如何“设计”我的代码有了更好的理解,但我学会了用Java编程,而我过去常常做我喜欢的事情。你能建议如何将我的例子放入PEP-8吗?非常感谢。
result = urllib.urlretrieve(
"https://secure.gravatar.com/avatar.php?"+
urllib.urlencode({
'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)
})
)
答案 0 :(得分:5)
尝试下载代码样式链接,例如pep8(检查代码是否符合PEP 8要求的程序)或pylint。您可以在此处找到更全面的Python样式检查器列表和比较:What are the comprehensive lint checkers for Python?
事实上,网上有一个pep8检查器:http://pep8online.com/
如果我们通过它运行您的代码,它会告诉您:
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
您的代码的固定版本看起来更像是这样:
result = urllib.urlretrieve(
"https://secure.gravatar.com/avatar.php?" +
urllib.urlencode({
'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)
})
)
从本质上讲,你遇到的主要PEP 8违规行为是你太多了。单个缩进很好 - 您不需要对齐函数调用的开头数。 Python也坚持你的行不超过80个字符,但修复过度缩进也解决了这个问题。
答案 1 :(得分:1)
使用更多变量。线条不仅易于阅读,而且完整的代码更易于理解:
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)
答案 2 :(得分:0)
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)
请注意,autopep8是一个用于格式化Python代码以符合PEP8的实用程序。在这种情况下,它会将您的原始代码转换为
result = urllib.urlretrieve(
"https://secure.gravatar.com/avatar.php?" +
urllib.urlencode({
'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)
})
)