将函数放在类方法中是一种糟糕的编程习惯吗?

Emi*_*zar 5 python oop

我正在看这样一个案例:

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())
Run Code Online (Sandbox Code Playgroud)

它有效,但有没有更好的方法来做到这一点?

Sil*_*olo 3

正如@Graipher 在评论中提到的,这在某些情况下当然是有效的,但在您的特定情况下,这是不必要的。如果您的函数依赖于局部变量,那么您将返回一个每次调用该方法时都需要重建的闭包。但在您的情况下,每次调用该方法时,该函数都会以相同的方式运行,因此将其全局定义为私有方法,甚至在您的情况下定义为 lambda 更有意义。

ver = lambda x: x if x else 'null'
Run Code Online (Sandbox Code Playgroud)

但首选的方法是简单地在全局范围内定义它,并用下划线开始名称以明确其意图。

def _ver(string):
    ...
Run Code Online (Sandbox Code Playgroud)