Python';s功能范围
我正在使用python并做以下工作Python';s功能范围,python,scope,Python,Scope,我正在使用python并做以下工作 x = [1,2,3,4,5] def function1(): print(x) function1() 我想我会得到错误名称“x”未定义,但我没有,它会打印变量x,即使它未在函数中定义。为什么python允许我在函数内部使用函数外部定义的变量,即使它们具有不同的作用域?基本上,您将x设置为全局变量 x = "myString" function global(): print(x) // Global function notglo
x = [1,2,3,4,5]
def function1():
print(x)
function1()
我想我会得到错误
名称“x”未定义
,但我没有,它会打印变量x,即使它未在函数中定义。为什么python允许我在函数内部使用函数外部定义的变量,即使它们具有不同的作用域?基本上,您将x设置为全局变量
x = "myString"
function global():
print(x) // Global
function notglobal():
y = "myOtherString"
print(y) // Not Global
class myClass:
z = "notGlobal" // Not Global
function printZ():
print(z) // Global To class
print(z) // Not global so will error out
x
是全局的,这意味着所有函数都可以使用它。我喜欢所提供的处理方法,它将所描述的行为与Javascript的变量提升进行比较(尽管博客使用了负面示例来演示).因为Python使用嵌套的作用域。请阅读我的答案>如何选择全局变量?如果它在类/函数之外,请编辑它的全局变量,以便更好地解释答案?好了。应该更新我希望它能解释