gpt4 book ai didi

python - Python 中的全局变量

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:46 25 4
gpt4 key购买 nike

我是 Python 的新手。还没有上过课。使用 Python 3.2.2。尝试实现一些过程 C 逻辑。我的代码分布在 2 个文件中,如下所示。

这个文件叫做date.py
dd,mm,yy=0,0,0

def isValidDate(d,m,y):
if(d>=1 and d<=31 and m>=1 and m<=12):
dd,mm,yy=d,m,y #problem
print(dd,mm,yy) #problem
print(d,m,y) #problem
return True
else:
return False

def printDate():
print(dd,mm,yy) #problem

这个文件叫做module1.py
import date

def main():
dd,mm,yy = 23,1,1984
valid = date.isValidDate(dd,mm,yy) #problem
print (valid)
date.printDate()
date.dd=22 #problem
date.printDate()

if __name__ == '__main__':
main()

我评论为“问题”的行给我带来了问题。

module1.py中的语句(即"date.dd=22")执行时,date.py中全局变量的值 更改为 22 并保持原样。

但是当我调用isValidDate()函数时,即使测试条件通过了,赋值似乎也不是永久的。 isValidDate() 函数中的本地打印语句显示 "dd" 被赋值,但在 main() 函数中调用printDate() 显示原始值。

这是怎么回事?

最佳答案

要为代码中的全局变量赋值,您必须将其标记为全局变量,否则代码将赋值给具有相同名称的局部变量(这实际上会隐藏全局变量)。

documentation 中所述:

It would be impossible to assign to a global variable without global, although free variables may refer to globals without being declared global.

因此,要解决这个问题,您需要这样的东西:

def isValidDate(d,m,y):
if(d>=1 and d<=31 and m>=1 and m<=12):
global dd, mm, yy
dd,mm,yy=d,m,y
...

关于python - Python 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8883000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com