代表下一行代码的最佳Python方法是什么?

时间:2019-11-11 16:08:39

标签: python indentation pep8

基本思想是写这样的一行:

url = 'https://{host}?key={key}&lang={lang}&text='.format(**data)  + '&text='.join(words)

想用PEP 8样式重写它,所以这样写:

url = 'https://{host}?key={key}&lang={lang}&text='.format(**data) \
    + '&text='.join(words)

其中哪一项是对的?

如果都不是,我想听听为什么,然后看看你会怎么写。

3 个答案:

答案 0 :(得分:5)

都没有?我可能很想尝试为此设计的方法,例如:

from urllib.parse import urlencode

host = 'example.com'
data = {'key': 'foo', 'lang': 'bar', 'text': 'baz'}
url = 'https://{host}?{query}'.format(host=host, query=urlencode(data))

这将为您提供url的奖励:

'https://example.com?key=foo&lang=bar&text=baz'

答案 1 :(得分:2)

urlencode函数可以处理这种情况-即使使用单词列表:

from urllib.parse import urlencode

host = 'example.com'
data = {'key': 'asdf', 'lang': 'en-us', 'text': ['sam', 'i', 'am']}
params = urlencode(data, True)
url2 = 'https://{host}?' + params

这将产生:https://example.com?key=asdf&lang=en-us&text=sam&text=i&text=am

请注意,将urlencode参数设置为doseq来调用True来处理重复参数列表。

答案 2 :(得分:-1)

根据Python Style Guide,每行的最大长度应为79个字符,但“对于具有较少结构限制(文档字符串或注释)的长文本流,应将行长限制为72个字符。 ”

但是,在编写代码时,就个人喜好如何真正格式化代码而言,有些人不会为大于79个字符的行而烦恼(尽管为了准备就绪而坚持使用该行),而另一些人可能希望较短的行超过79个字符。