【发布时间】:2018-10-09 14:54:55
【问题描述】:
当我运行下面的python代码时,结果是0、5
#file name main1.py
def getZ(x,y):
global Z
Z=x*x+y*y
return Z
global X,Y,Z
X=1
Y=2
Z=0
print(Z)
getZ(X,Y);
print(Z)
但是当我运行下面的文件时
#file name main2.py
import getZ
global X,Y,Z
X=1
Y=2
Z=0
print(Z)
getZ.getZ(X,Y);
print(Z)
具有新的用户定义功能,
#file name getZ.py
def getZ(x,y):
global Z
Z=x*x+y*y
return Z
结果为 0, 0
我无法理解这种情况。
谁能帮帮我?
感谢您的建议。
【问题讨论】:
-
global Z只允许函数访问全局变量Z从该文件。它对导入的文件中的Z一无所知。要在所有文件中拥有真正全局的Z,您需要在要使用它的每个文件中使用from ... import Z- 除了这个(具有可以更改所有文件的值的变量)确实是糟糕的设计,这就是 Python 让你很难做到这一点的原因。 -
global在全局范围内不做任何事情;它的唯一用途是将函数局部变量更改为全局变量in函数。
标签: python global-variables return-value user-defined-functions calling-convention