我正在看这样的案例:
def parse_item(self, response):
item = MetrocItem()
def ver(string):
if string:
return string
else:
return 'null'
item['latitude'] = ver(response.xpath('//input[@id="latitude"]/@value').extract_first())
它有效,但是有更好的方法吗?
最佳答案 正如@Graipher在评论中提到的,这在某些情况下肯定是有效的,但在您的特定情况下,这是不必要的.如果你的函数依赖于局部变量,那么你每次调用方法时都会返回一个需要重建的闭包.但在你的情况下,每次调用方法时函数的行为方式都相同,因此将它全局定义为私有方法,甚至在你的情况下作为lambda更有意义.
ver = lambda x: x if x else 'null'
但首选的方法是简单地全局定义它并用下划线开始名称以明确意图.
def _ver(string):
...