Python 3.6.1中的作用域和错误

Python 3.6.1中的作用域和错误,python,scope,Python,Scope,下面的代码如何将输出设为无 def funct(x): x=7 x=11 x=test(x) print(x) 下面是另一个代码片段:- def func(): print (x) x = 90 x = 1 func() 这个的输出应该是90!范围搜索为本地、封闭、全局和内置。此处应将x搜索为本地或全局 请解释。x这里不是函数范围内的全局变量,因为函数自然会创建自己的名称空间,其中不包括任何未作为参数传入的外部变量 代码中有很多问题,包括函数调用的顺序以及函数内部

下面的代码如何将输出设为无

def funct(x):
    x=7

x=11
x=test(x)
print(x)
下面是另一个代码片段:-

def func():
    print (x)
    x = 90

x = 1
func()
这个的输出应该是90!范围搜索为本地、封闭、全局和内置。此处应将x搜索为本地或全局 请解释。

x
这里不是函数范围内的全局变量,因为函数自然会创建自己的名称空间,其中不包括任何未作为参数传入的外部变量

代码中有很多问题,包括函数调用的顺序以及函数内部操作的顺序;但是,为了尽可能广泛地回答您的问题,为了让您能够在更大的范围内访问在函数外部定义的
x
变量,您需要通过在每个函数体中预先添加
global x
来引用其命名空间


继续阅读,并重新检查我上面提到的代码中的其他错误。

第一个代码片段返回None,原因很简单,您没有从函数返回任何值。您将x定义为局部参数,而不是全局变量。由于没有返回任何值,因此调用test(x)(与funct的函数名不匹配)将变成None的值。这在Python文档中有明确的定义。要将本地值返回到主程序,请尝试以下操作:

test(x):
    x = 7
    return x

x = 11
x = test(x)
print(x)
另外,请注意,主程序中完全忽略了初始值11,并且函数忽略了给定的值。您应该将此示例缩短为

func():
    return 7

print(func())

第二个示例将打印1的外部值,因为您尚未在该点定义局部变量x,并且允许函数引用全局变量

但是,当您在下一个程序中赋值时,会创建一个局部变量——您没有将x声明为全局变量,因此无法在主程序中赋值给x

同样,您不会返回任何值。因此,回到主程序中,func()的计算结果为None


这就清楚了吗?

您的代码格式出现了问题。咨询和你的职位。