首页 > 解决方案 > 为什么我的函数内部的变量即使是全局变量也没有定义?

问题描述

所以我做了一个打开网站的功能:

import webbrowser

def go_to_url(link):
    
    global YT, Reddit, SO
    YT = 'youtube.com'
    Reddit = 'reddit.com'
    SO = 'stackoverflow.com'
    webbrowser.open(link)

go_to_url(YT)

运行时没有语法错误,但返回结果:

NameError:名称“YT”未定义

后来我尝试在函数之外定义变量并且它起作用了:

import webbrowser

def go_to_url(link):
   webbrowser.open(link)

YT = 'youtube.com'
Reddit = 'reddit.com'
SO = 'stackoverflow.com'

go_to_url(YT)

我只是不明白为什么我不能在我的函数中定义它,即使它们是全局的。请给我解释一下,提前谢谢!

标签: pythonpython-3.xfunctionvariablesglobal-variables

解决方案


您在这里遇到的问题是该变量在您实际运行该函数之前没有定义,因此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

推荐阅读