为什么我的变量在一个函数中没有定义,即使它是全局的?
Why is my variable inside a function not defined even if it's global?
所以我做了一个打开网站的功能:
import webbrowser
def go_to_url(link):
global YT, Reddit, SO
YT = 'youtube.com'
Reddit = 'reddit.com'
SO = 'whosebug.com'
webbrowser.open(link)
go_to_url(YT)
当 运行 时没有语法错误,但 returns 结果:
NameError: name 'YT' 未定义
后来我尝试在函数外定义变量并且成功了:
import webbrowser
def go_to_url(link):
webbrowser.open(link)
YT = 'youtube.com'
Reddit = 'reddit.com'
SO = 'whosebug.com'
go_to_url(YT)
我只是不明白为什么我不能在我的函数中定义它,即使它们是全局的。请给我解释一下,先谢谢了!
你在这里遇到的问题是,直到你实际 运行 函数才定义变量,因此 YT
在你尝试创建时不存在称呼。例如:
In [144]: def make_vars():
...: global hello
...: hello = "world"
...:
In [145]: print(hello)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-145-1cd80308eb4c> in <module>
----> 1 print(hello)
NameError: name 'hello' is not defined
In [146]: make_vars()
In [147]: print(hello)
world
所以我做了一个打开网站的功能:
import webbrowser
def go_to_url(link):
global YT, Reddit, SO
YT = 'youtube.com'
Reddit = 'reddit.com'
SO = 'whosebug.com'
webbrowser.open(link)
go_to_url(YT)
当 运行 时没有语法错误,但 returns 结果:
NameError: name 'YT' 未定义
后来我尝试在函数外定义变量并且成功了:
import webbrowser
def go_to_url(link):
webbrowser.open(link)
YT = 'youtube.com'
Reddit = 'reddit.com'
SO = 'whosebug.com'
go_to_url(YT)
我只是不明白为什么我不能在我的函数中定义它,即使它们是全局的。请给我解释一下,先谢谢了!
你在这里遇到的问题是,直到你实际 运行 函数才定义变量,因此 YT
在你尝试创建时不存在称呼。例如:
In [144]: def make_vars():
...: global hello
...: hello = "world"
...:
In [145]: print(hello)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-145-1cd80308eb4c> in <module>
----> 1 print(hello)
NameError: name 'hello' is not defined
In [146]: make_vars()
In [147]: print(hello)
world