Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function Python3:使用函数中定义的变量_Function_Variables_Python 3.x - Fatal编程技术网

Function Python3:使用函数中定义的变量

Function Python3:使用函数中定义的变量,function,variables,python-3.x,Function,Variables,Python 3.x,我对Python3中出现的这种行为感到困惑,我想知道是否有办法解决它,或者我是否做错了什么 我在命令行和脚本中看到了这一点。我定义了一个名为“SETVAR()”的函数。SETVAR()将使用getpass.getuser()(已导入)并将输出保存到变量USER。函数被执行,但当用户被打印时,我得到一个错误,说明变量没有定义。如果我在函数外定义变量,一切都很好。但是,在我的脚本中,我希望使用在函数中定义和生成的变量。能做到吗 >>> def SETVAR(): ... U

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

我在命令行和脚本中看到了这一点。我定义了一个名为“SETVAR()”的函数。SETVAR()将使用getpass.getuser()(已导入)并将输出保存到变量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
>>def SETVAR():
...     USER=getpass.getuser()
... 
>>>SETVAR()
>>>打印(用户)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“用户”
>>>USER=getpass.getuser()
>>>打印(用户)
科利尔

问题:如何使用在已定义和执行的函数中定义和创建的变量(无论是在命令行还是脚本中)?

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

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

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

谢谢!我会在九分钟内接受这个答案(服务器这么说)。你应该包括一个免责声明,说明这几乎总是一个坏主意,不要这样做。没有投票?我觉得这是个好问题。它肯定有一个很好的答案。为什么这会被否决?我能做些什么不同的事?