如何在函数中创建或使用全局变量?
如果我在一个函数中创建一个全局变量,我如何在另一个函数中使用该全局变量?我是否需要将全局变量存储在需要访问的函数的局部变量中?
Python范围规则究竟是什么?
如果我有一些代码:
code1
class Foo:
code2
def spam.....
code3
for code4..:
code5
x()
Run Code Online (Sandbox Code Playgroud)
在哪里x找到?一些可能的选择包括以下列表:
在执行期间,当函数spam在其他地方传递时,也存在上下文.也许lambda函数的传递方式有点不同?
某处必须有简单的参考或算法.对于中级Python程序员来说,这是一个令人困惑的世界.
好吧,所以我对编程有点新意,我正在开发一个基于文本的游戏,以便在Python中获得更多练习.总而言之,我把游戏中的"设置"部分变成了一个函数,这样我就可以最小化这个函数(我使用的是记事本++)并摆脱混乱,所以如果我想要的话我可以调用它改变一些设置变量.但是当我把它全部放入一个函数时,我意识到它(函数)不能改变全局变量,除非你做所有这些额外的东西让python知道你正在处理全局变量,而不是一些单独的函数变量.问题是,函数是我知道重用代码的唯一方法,这就是我真正需要的,我不需要使用任何参数或任何特殊的参数.那么有什么类似于允许我重用代码的函数,并且不会让我几乎是我的代码长度的两倍,让它知道它的全局变量?
很抱歉可能会让这个太长或令人困惑,我重写了它并且第二次没有变得更清楚:P.感谢任何能给我帮助的人!
我无法在 Spyder 4.0.0 中与 Python 3.8、Windows 10 交互地修改全局变量。最近一定有更改,因为这以前是可能的。
我有以下示例文件:
x = 5
def IncreaseX():
global x
x += 1
print(x)
IncreaseX()
print(x)
Run Code Online (Sandbox Code Playgroud)
In [1]: runfile('TestGlobals.py', wdir='D:')
5
6
Run Code Online (Sandbox Code Playgroud)
In [2]: x
Out[2]: 6
In [3]: IncreaseX()
In [4]: x
Out[4]: 6
Run Code Online (Sandbox Code Playgroud)
In [5]: print(x)
...: IncreaseX()
...: print(x)
6
6
Run Code Online (Sandbox Code Playgroud)
In [6]: x = 5
...: def IncreaseX():
...: global x
...: x += 1
...:
...: …Run Code Online (Sandbox Code Playgroud) 我有一个关于python函数范围的问题.我已经包含了一个示例,说明了我遇到的问题.
fun0重新定义了varible c列表中的第一个条目.这个变化反映在fun0之外,即使我没有从fun0返回任何值.
fun1完全重新定义变量c,但更改不会在fun1之外反映出来.同样,fun2重新定义了c,并且更改不会在fun2之外反映出来.
我的问题是,为什么fun0修改VAL3的主要功能,同时FUN1和FUN2不修改VAL4和val7分别?
def fun0(a, b, c):
c[0] = a[0] + b[0]
return
def fun1(a, b, c):
c = a[0] + b[0]
return
def fun2(a, b, c):
c = a + b
return
def main():
val1 = ['one']
val2 = ['two']
val3 = ['']
fun0(val1, val2, …Run Code Online (Sandbox Code Playgroud) 首先,我必须告诉你,我对编码完全陌生,所以我遇到的问题可能是由有史以来最愚蠢的错误引起的,如果是这样,我很抱歉!
我正在尝试制作一个能够计算 +、-、*、/ 的计算器。如果收到的操作符号无效,它还应该给出错误消息并要求提供新的操作符号。为了让计算机知道函数“main”是否正在运行,因为它收到了一个无效的函数,或者它是第一次运行,我试图使用一个名为“check”的全局变量。开始时,check设置为1,因此计算机在要求操作时会使用第一个短语。如果输入了一个无效的操作,变量“check”就会加一,当它要求一个新的操作时,这将导致第二个短语(错误信息)。
问题是,当我尝试运行脚本时,在第一行出现语法错误,其中“全局检查 = 1”。我究竟做错了什么?
下面是我的代码:
global check = 1
#returns num1 + num2
def add(num1,num2):
return num1 + num2
#returns num1 - num2
def sub(num1,num2):
return num1 - num2
#returns num1 * num2
def mul (num1,num2):
return num1 * num2
#returns num1 / num2
def div (num1,num2):
return num1 / num2
#Main Function
def main():
if(global check == 1): #checks if "main" has been read before, if it has, then it is read agian because of invalid …Run Code Online (Sandbox Code Playgroud) python ×6
function ×2
scope ×2
global ×1
interactive ×1
python-3.x ×1
spyder ×1
syntax-error ×1