为什么我的变量在一个函数中没有定义,即使它是全局的?

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