小编典典

为什么Python赋值不返回值?

python

为什么Python赋值是语句而不是表达式?如果它是一个返回赋值右侧值的表达式,则在某些情况下它将允许冗长得多的代码。有没有我看不到的问题?

例如:

# lst is some sequence
# X is come class
x = X()
lst.append(x)

可能被改写为:

lst.append(x = X())

好吧,确切地说,上面的方法不起作用,因为x它将被视为关键字参数。但是另一对括号(或关键字参数的另一个符号)将解决该问题。


阅读 210

收藏
2020-12-20

共1个答案

小编典典

许多人认为赋值就是表达式,特别是在像Python这样的语言中,条件中允许 任何
值(不仅是某些布尔类型的值)都是容易出错的。大概圭多(Guido)在那种感觉中。经典错误是:

if x = y: # oops! meant to say ==

在Python中,这种情况也比在C语言中更为复杂,因为在Python中,对变量的第一个赋值也是其声明。例如:

def f():
    print x

def g():
    x = h()
    print x

在这两个函数中,“ print x”行做不同的事情:一个是指全局变量x,另一个是指局部变量x。在xg是因为分配的地方。如果可以将赋值埋在一些较大的表达式/语句中,则甚至可能比以前更加令人困惑。

2020-12-20