url_base = ("https://maps.googleapis.com/maps/api/place/search/json?"
"location=%s,%s&radius=500&types=food|doctor&sensor=false&"
"key=%s&pagetoken=%s") % (
r['lat'],
r['lng'],
YOUR_API_KEY,
''
)
虽然格式如上所示,但我在SublimeText中没有关于PEP8的下划线,但对我来说它看起来很奇怪。如何设置格式:
a)更好(代码更可读)
b)仍然符合PEP8?
也许让你觉得奇怪的是这个很长的字符串被分解以符合PEP8的方式。然而,如果你确实需要打破一个很长的字符串,你正在做正确的方式。两个并列的字符串由Python自动连接。
在你的特殊情况下,你不需要写一个很长的字符串。相反,您可以使用urllib。Urlencode为您格式化参数:
import urllib
url_base = "https://maps.googleapis.com/maps/api/place/search/json?"
params = urllib.urlencode(
{'location': '{},{}'.format(r['lat'], r['lng']),
'radius': 500,
'types': 'food|doctor',
'sensor': 'false',
'key': YOUR_API_KEY,
'pagetoken': ''
})
url = url_base + params
from urlparse import urlunparse
query_params = { "location": "%s,%s" % (r['lat'], r['lng']),
"radius": "500",
"types": "food|doctor",
"sensor": "false",
"key": YOUR_API_KEY,
"pagetoken": ""
}
url_base = (urlunparse(("https", "maps.googleapis.com",
"/maps/api/place/search/json", None,
"&".join("=".join(qp) for qp in query_params.items()),
None)),
)
请记住,PEP8是指导方针和建议,而不是一套严格的规则。
您可以使用自己选择的文本编辑器对其进行格式化。如果你找到一种更适合你的格式,你可以把它做得更好。您可以通过坚持PEP8来确保PEP8的合规性。
或者直接从urllib文档中:
>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> params
'eggs=2&bacon=0&spam=1'
>>> url = 'http://www.musi-cal.com/cgi-bin/query?' + params
>>> url
'http://www.musi-cal.com/cgi-bin/query?eggs=2&bacon=0&spam=1'