相关疑难解决方法(0)

在函数中使用全局变量

如何在函数中创建或使用全局变量?

如果我在一个函数中创建一个全局变量,我如何在另一个函数中使用该全局变量?我是否需要将全局变量存储在需要访问的函数的局部变量中?

python scope global-variables

2939
推荐指数
22
解决办法
307万
查看次数

范围规则的简短描述?

Python范围规则究竟是什么?

如果我有一些代码:

code1
class Foo:
   code2
   def spam.....
      code3
      for code4..:
       code5
       x()
Run Code Online (Sandbox Code Playgroud)

在哪里x找到?一些可能的选择包括以下列表:

  1. 在封闭的源文件中
  2. 在类命名空间中
  3. 在函数定义中
  4. 在for循环索引变量中
  5. 在for循环中

在执行期间,当函数spam在其他地方传递时,也存在上下文.也许lambda函数的传递方式有点不同?

某处必须有简单的参考或算法.对于中级Python程序员来说,这是一个令人困惑的世界.

python scope dynamic-languages

451
推荐指数
8
解决办法
24万
查看次数

Python - 函数访问全局变量

好吧,所以我对编程有点新意,我正在开发一个基于文本的游戏,以便在Python中获得更多练习.总而言之,我把游戏中的"设置"部分变成了一个函数,这样我就可以最小化这个函数(我使用的是记事本++)并摆脱混乱,所以如果我想要的话我可以调用它改变一些设置变量.但是当我把它全部放入一个函数时,我意识到它(函数)不能改变全局变量,除非你做所有这些额外的东西让python知道你正在处理全局变量,而不是一些单独的函数变量.问题是,函数是我知道重用代码的唯一方法,这就是我真正需要的,我不需要使用任何参数或任何特殊的参数.那么有什么类似于允许我重用代码的函数,并且不会让我几乎是我的代码长度的两倍,让它知道它的全局变量?

很抱歉可能会让这个太长或令人困惑,我重写了它并且第二次没有变得更清楚:P.感谢任何能给我帮助的人!

python function global-variables

8
推荐指数
1
解决办法
8353
查看次数

如何使全局变量在 Spyder 中的函数内工作?

我无法在 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)
  1. 当我运行它(使用 F5)时,我得到了所需的输出:
In [1]: runfile('TestGlobals.py', wdir='D:')
5
6
Run Code Online (Sandbox Code Playgroud)
  1. 但是,如果我尝试从嵌入式 Ipython 控制台运行 IncreaseX() 函数,它不会更改全局变量的值:
In [2]: x
Out[2]: 6

In [3]: IncreaseX()

In [4]: x
Out[4]: 6
Run Code Online (Sandbox Code Playgroud)
  1. 如果我选择示例的最后 3 行并运行它们(使用 F9),也会发生同样的情况:
In [5]: print(x)
   ...: IncreaseX()
   ...: print(x)
6
6
Run Code Online (Sandbox Code Playgroud)
  1. 如果我选择示例文件的所有行并运行它们(使用 F9),则行为会有所不同:
In [6]: x = 5
   ...: def IncreaseX():
   ...:     global x
   ...:     x += 1
   ...: 
   ...: …
Run Code Online (Sandbox Code Playgroud)

python global interactive function spyder

6
推荐指数
1
解决办法
3407
查看次数

Python函数范围

我有一个关于python函数范围的问题.我已经包含了一个示例,说明了我遇到的问题.

fun0重新定义了varible c列表中的第一个条目.这个变化反映在fun0之外,即使我没有从fun0返回任何值.

fun1完全重新定义变量c,但更改不会在fun1之外反映出来.同样,fun2重新定义了c,并且更改不会在fun2之外反映出来.

我的问题是,为什么fun0修改VAL3主要功能,同时FUN1FUN2不修改VAL4val7分别?

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)

python

5
推荐指数
1
解决办法
173
查看次数

Python:使用全局变量的无效语法

首先,我必须告诉你,我对编码完全陌生,所以我遇到的问题可能是由有史以来最愚蠢的错误引起的,如果是这样,我很抱歉!

我正在尝试制作一个能够计算 +、-、*、/ 的计算器。如果收到的操作符号无效,它还应该给出错误消息并要求提供新的操作符号。为了让计算机知道函数“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 global-variables syntax-error python-3.x

3
推荐指数
1
解决办法
2万
查看次数