当前位置: 首页 > 面试题库 >

为什么我不能在Python中设置全局变量?

吕峰
2023-03-14
问题内容

全局变量在Python中如何工作?我知道全局变量是有害的,我只是在做实验。

这在python中不起作用:

G = None

def foo():
    if G is None:
        G = 1

foo()

我收到一个错误:

UnboundLocalError: local variable 'G' referenced before assignment

我究竟做错了什么?


问题答案:

您需要global声明:

def foo():
    global G
    if G is None:
        G = 1

在Python中, 您分配的 变量默认情况下成为局部变量。您需要使用global将它们声明为全局变量。另一方面,您 引用但未分配的
变量不会自动成为局部变量。这些变量指的是封闭范围内最接近的变量。

Python
3.x引入了nonlocal类似于的语句global,但是将变量绑定到了最接近的范围。例如:

def foo():
    x = 5
    def bar():
        nonlocal x
        x = x * 2
    bar()
    return x

调用时此函数返回10。



 类似资料:
  • 我在Ubuntu中安装JDK有困难,我不能让它工作。谁能让我知道我做错了什么? 1-我从Oracle的网站下载了jdk-6u35-linux-i586.bin 2-我将下载的文件移到了家里/ 3-我使用chmod+x jdk-6u35-linux-i586.bin将其转换为可执行文件 4-我使用sudo./jdk1.6.0_35执行它 5-我使用mv jdk1.6.0_35//usr/local/

  • 今天在课堂上,我的老师告诉我,我不应该在python中使用全局变量,因为函数应该能够独立存在。我想我可以通过参数和返回值来实现这一点?任何帮助都会很好,谢谢。

  • 问题内容: 为什么全局变量是不好的?[closed] 问题答案: 这与Python无关。全局变量在任何编程语言中都是不好的。 但是,全局常量在概念上与全局变量并不相同。全局常数完全无害。只是在Python中没有强制性差异,只有约定是。 它们不好的原因是它们使函数具有隐藏的(非显而易见的,令人惊讶的,难以检测的)副作用,从而导致复杂性的增加,并有可能导致产生Spaghetti代码。 但是,即使在函数

  • 问题内容: 我正在一个项目上,我想让我的索引在滚动时加载更多内容。我想设置一个全局变量来保存页面已加载多少次。我的项目结构如下: 首先,我在中声明全局变量: 皮查姆(Pycharm)警告 在: 还有 我也引用了global-variable-and-python-flask 但我没有main()函数。在Flask中设置全局变量的正确方法是什么? 问题答案: 你没有在定义,只是在声明,所以就好像在说

  • 问题内容: 我希望编写python脚本,通过在要执行一些模拟代码的任何目录中运行该脚本来创建一些适当的环境变量,并且我读到我无法编写脚本来使这些环境变量持久存在于其中。 Mac OS终端。有两件事: 这是真的? 和 看起来这将是一件有用的事情;为什么一般不可能呢? 问题答案: 您无法通过python做到这一点,但是一些聪明的bash技巧可以做类似的事情。基本理由是:每个进程的内存空间中都存在环境变

  • 我试图理解将jwt存储在本地存储(倾向于xss)与cookie(倾向于csrf)的安全含义。我想了解如果我将jwt令牌存储在前端的应用状态中的安全性影响,就像在redux商店中一样。 编辑: 我试图了解有关存储代币的更多信息。似乎所有的文章和答案实际上都是在确定有两种方法可以做到这一点后开始讨论的,即cookie或浏览器存储。像这样一个相关的问题:在浏览器中的何处存储JWT?如何防范CSRF?像这