Python中的作用域3.6.和错误
问题描述:
下面的代码如何以None输出结果?Python中的作用域3.6.和错误
def funct(x):
x=7
x=11
x=test(x)
print(x)
这里是另外一个代码片段: -
def func():
print (x)
x = 90
x = 1
func()
这个输出应该是90!范围搜索为本地,封闭,全局,内置。这里x应该在这里搜索本地或全球 请解释。
答
x
这里是不中的职能范围的全局变量,因为功能自然创建自己的命名空间,其中不包括未通过作为参数的任何外部变量。
你的代码有很多问题,包括函数调用顺序和函数内部操作的顺序;但为了尽可能最广泛地回答您的问题,为了让您访问在函数之外定义的变量,在更大的范围内,即需要引用其名称空间,在每个主体的内部加上global x
功能。
阅读Python variables and scope,然后重新检查我上面提到的代码中的其他错误。
答
第一代码片段返回一个简单的事实,你没有从函数返回任何值无。您将x定义为本地参数,而不是全局变量。由于您没有返回任何值,因此您的电话测试(x)(与功能名称功能不匹配)将成为值无。这在Python文档中有明确的定义。要获得本地值回你的主程序,试试这个:
test(x):
x = 7
return x
x = 11
x = test(x)
print(x)
而且,请注意,您的11初始值在主程序中完全忽略了,那你的函数忽略它给出的值。您应该缩短这个例子
func():
return 7
print(func())
你的第二个例子将打印的的外在价值,因为你有不在这一点上定义一个局部变量X,并且功能是允许到参考全局变量。
但是,当您在接下来的分配一个值,你创建一个局部变量 - 你没有申报X是全球性的,所以你不能在主程序分配给X 。
同样,您不会返回任何值。因此,在主程序中,func()评估为无。
这是否清除发生了什么?
您的代码格式出错了。请参阅[Markdown帮助 - 代码和预格式化文本](http://*.com/editing-help#code)和[编辑]您的文章。 – Kevin