【发布时间】:2023-01-05 23:01:20
【问题描述】:
如果标题有点含糊(我不知道如何将我的问题放在一个标题中),请在此处进行解释。
我有一个全局变量
ex = False
orig = id(ex)
然后,我有两个功能:
def start(test):
print("Start")
global ex
while True:
if id(ex) == orig:
print("same")
else:
print(orig)
print(id(ex))
def end(test):
print("End")
global ex
ex = True
while True:
if id(ex) == orig:
print("same")
else:
print(orig)
print(id(ex))
当我进入“end-function”时,函数中“ex”的id与原来的id不一样。所以,它们基本上是两个不同的变量。
我不明白为什么会这样。我的意思是,我知道它会发生,因为我确实设置了“ex = True”(因为如果我跳过这一行,id 是相同的)。但我不明白为什么。我认为 global 关键字的想法正是使在函数内设置全局变量成为可能。 Using global variables in a function
【问题讨论】:
-
变量没有 ID。对象有 ID。看到不同对象的不同 ID 是完全正常的。
-
看起来你正在尝试做的事情应该在课堂上完成。因此,您可以拥有具有方法开始和结束的类的不同实例。你能解释一下你想要达到的目标吗?
-
@user2357112 一切都是 python 中的对象....
-
@SkoboDo:“一切”是一个误导性的宽泛术语。当人们说“一切都是对象”时,他们的意思是 Python 没有非对象的“原始”类型。这并不意味着变量是对象。
-
你得到身份证
1对象的,而不是x变量的 ID。
标签: python function global local