python – 将函数放在类方法中是不是一个糟糕的编程实践?

我正在看这样的案例:

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):
    ...
点赞