-1

我对 Python3 中看到的这种行为感到困惑,我想知道是否有办法解决它,或者我是否做错了什么。

我在命令行和脚本中看到了这一点。我定义了一个名为“SETVAR()”的函数。SETVAR() 将使用 getpass.getuser()(已导入)并将输出保存到变量 USER。该函数已执行,但在打印 USER 时,我收到一条错误消息,指出未定义变量。如果我在函数之外定义变量,一切都很好。但是,在我的脚本中,我想使用在函数中定义和创建的变量。可以做到吗?

>>> def SETVAR():
...     USER = getpass.getuser()
... 
>>> SETVAR()
>>> print(USER)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'USER' is not defined

>>> USER = getpass.getuser()
>>> print(USER)
collier

问题:我如何使用在命令行或脚本中定义和执行的函数中定义和创建的变量?

4

1 回答 1

2

即使您在函数中定义和创建变量,您也可以让 Python 知道您希望生成的变量可全局访问;

>> def SETVAR():
...     global USER
...     USER='olle'
... 
>>> SETVAR()
>>> print(USER)
olle
>>> 

编辑:我倾向于同意@Wooble 在评论中的观点,即在大多数情况下您可能需要三思而后行。对于简单的脚本,它可能非常有用,但对于更复杂的情况,它会使代码难以理解。

于 2013-08-19T13:22:57.210 回答