Python 在函数中使用函数而不是lambda

Python 在函数中使用函数而不是lambda,python,function,Python,Function,我不确定是在stackoverflow还是程序员上发布,如果我选错了,很抱歉。我对python也很陌生,所以我可能遗漏了一些东西 以下哪一个更正确。如中所示,哪一个是最佳实践。都是吗?如果是的话,我什么时候用哪一个 1) 拉姆达: 2) 函数中的函数 def hello_world(): def hello(): print("Hello World") server_thread = threading.Thread(target=hello) 两者都是完全可

我不确定是在stackoverflow还是程序员上发布,如果我选错了,很抱歉。我对python也很陌生,所以我可能遗漏了一些东西

以下哪一个更正确。如中所示,哪一个是最佳实践。都是吗?如果是的话,我什么时候用哪一个

1) 拉姆达:

2) 函数中的函数

def hello_world():
    def hello():
        print("Hello World")
    server_thread = threading.Thread(target=hello)

两者都是完全可以接受的


请记住,嵌套函数可以演化为更复杂的函数,而lambda永远只限于一个表达式。

两者都是完美的。只是口味的问题。如果表达式很复杂,并且应该用多于在线的方式编写,请使用
def
lambda
否则(至少我通常是这样写的)。我不会在这里使用
lambda
,因为它有副作用(即输出),我倾向于期望lambda函数没有任何副作用。在这种情况下,您也可以将函数放在函数之外。@DSM问题是,在Python这样的语言中,lambdas没有副作用的(或任何其他函数)并不是非常有用。在GUI编程中,lambda通常用于构造回调,回调通常会产生副作用。例如,
self.button.connect('clicked',lambda btn:self.\u start\u calculation(current,num))
def hello_world():
    def hello():
        print("Hello World")
    server_thread = threading.Thread(target=hello)