Python 如何处理全局变量?

2023-12-12

我在 Python 中遇到过一些非常奇怪的全局变量处理方式。我希望有人能够解释并证明这些惊喜的合理性!

A) 此代码按预期打印 10:

def func():
  print(a)
a = 10
func()

B) 此代码抛出有关过早引用 a 的异常:

def func():
  print(a)
  a += 1
a = 10
func()

C) 但此代码按预期打印 [10]:

def func():
  print(a)
  a.append(1)
a = [10]
func()

所以我可以得出这样的类型a改变了它的范围,另外后来的声明甚至还没有达到改变如何a被看到。我知道我可以使用global a在函数的开头,但它相当冗长。

谁能告诉我 Python 使用什么规则来处理其奇怪的作用域?


第二个实例rebinds a,因此编译器会为其生成本地访问。另外两个只读a,因此执行正常的全局范围搜索。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 如何处理全局变量? 的相关文章

  • 避免由于相对 URL 导致的错误请求

    我正在尝试使用Scrapy抓取一个网站 并且我想要抓取的每个页面的url都是使用这种相对路径编写的 a href en item to scrap html Link a 现在 在我的浏览器中 这些链接可以工作 您可以访问类似的网址http
  • 在 Python 中使用 Selenium 处理“接受 Cookie”弹出窗口

    我一直在尝试用硒抓取这个房地产网站的一些信息 但是 当我访问该网站时 我需要接受 cookie 才能继续 这仅在机器人访问网站时发生 而不是在我手动执行时发生 当我尝试通过 xpath 或 id 查找相应的元素时 正如我在手动检查页面时找到
  • 从正在运行的 python 脚本检测优化标志是否为 -O 或 -OO

    有时我想生成一个子进程 其优化标志与启动父进程时使用的优 化标志相同 我可以使用类似的东西 optimize not debug 但这样我就可以匹配两者 O and OO flags 是否有一些 python 内部状态包含该信息 经过一番深
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • python - 是否可以扩展 xml-rpc 可以序列化的事物集?

    我看到几个问题询问如何发送numpy ndarray通过 xml rpc 调用 这不能开箱即用 因为正如 xml rpc 中所述docs https docs python org 2 library xmlrpclib html 有一组固
  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • 即使使用 .loc[row_indexer,col_indexer] = value 时也会设置 WithCopyWarning

    这是我的代码中得到的行之一SettingWithCopyWarning value1 Total Population value1 Total Population replace to replace value 4 然后我将其更改为
  • 如何从 PyCharm 项目中获取我的“exe”[重复]

    这个问题在这里已经有答案了 通过 PyCharm 在 Python 上编写一些项目 我想从中获取一个exe文件 我尝试过 另存为 gt XXX exe 但是 当我尝试执行它时出现错误 此类操作系统不支持该文件 附注 我有win7 x64 它
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • 定义函数后对其进行修饰?

    I think答案是否定的 但我似乎找不到明确的说法 我有以下情况 def decorated function function functools wraps function def my function print Hello s
  • 更改 pandas 中多个日期时间列的时区信息

    有没有一种简单的方法可以将数据帧中的所有时间戳列转换为本地 任何时区 不是逐列进行吗 您可以有选择地将转换应用于所有日期时间列 首先 选择它们select dtypes https pandas pydata org pandas docs
  • 如何使用Python的super()来更新父值?

    我对继承很陌生 之前所有关于继承和 Python 的 super 函数的讨论都有点超出我的理解 我当前使用以下代码来更新父对象的值 usr bin env python test py class Master object mydata
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • Python组合目录中的所有csv文件并按日期时间排序

    我有 2 年的每日数据分成每月文件 我想将所有这些数据合并到一个按日期和时间排序的文件中 我正在使用的代码组合了所有文件 但不按顺序 我正在使用的代码 import pandas as pd import glob os import cs
  • 全局变量是 None 而不是实例 - Python

    我正在处理Python 中的全局变量 代码应该可以正常工作 但是有一个问题 我必须使用全局变量作为类的实例Back 当我运行应用程序时 它说 back is None 这应该不是真的 因为第二行setup 功能 back Back Back
  • TypeError:无法使用抽象方法实例化抽象类 <...>

    这是我的代码 from abc import ABC from abc import abstractmethod class Mamifiero ABC docstring for Mamifiero def init self self
  • 如何将列表字典写入字符串而不是 CSV 文件?

    This 堆栈溢出问题 https stackoverflow com questions 37997085 how to write a dictionary of lists to a csv file将列表字典写入 CSV 文件的答案
  • 在 Python 模块中使用 InstaLoader

    我正在尝试使用 Instaloader 下载与主题标签相关的照片以进行图像分析 我在GitHub存储库中找到了一个全面的方法 如何在终端中执行它 但是 我需要将脚本集成到Python笔记本中 这是脚本 instaloader no vide
  • Django South - 将 null=True 字段转换为 null=False 字段

    我的问题是 转变的最佳做法是什么null True场变成null False使用 Django South 的字段 具体来说 我正在与ForeignKey 你应该先写一个数据迁移 http south aeracode org docs t

随机推荐

  • 如何从双卡双待Android手机获取运营商名称?

    我可以从双 SIM 卡手机获取运营商名称 我使用了以下代码 但它仅适用于单 SIM 卡手机 TelephonyManager telephonyManager TelephonyManager mContext getSystemServi
  • << 运算符重写为 cout int 和 double 值

    我需要重写 我想我已经包含了所有必要的部分 提前致谢 struct Reading int hour double temperature Reading int h double t hour h temperature t bool o
  • '忽略' git rebase '他们的' 中的二进制文件

    我想从此走下去 A B C D E F G 其中 Branch1 指向 E Branch2 指向 G to this Branch1 A B C D E Branch2 F G 我希望 Branch2 始终 获胜 我已经做到了这一点 git
  • 安装 Ninject.MVC5 后出现 FileLoadException

    我正在尝试通过 Adam Freeman 的 Pro ASP NET MVC 5 书来学习 ASP NET MVC 不幸的是 所有使用 Ninject 的项目都会抛出相同的错误 Ninject dll 中发生 System IO FileL
  • 双击按钮

    如何添加双击按钮的操作 void buttonTouchDownRepeat id sender event UIEvent event UITouch touch event allTouches anyObject if touch t
  • java中的xml dom解析器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 任何人都可以分享java中dom解析器的好文档吗 thanks 以下是在 java 中使用 DOM 的教程 xml dom DOM解析器 java
  • 你能解释一下为什么情节在 J 处停止(在索引 10 处)

    我正在运行这个程序来查找特定文本中的字符分布 this is a paragraph from python documentation mytext When a letter is first k encountered it is m
  • StoreKit 验证错误 21002:收据数据属性中的数据格式错误

    在 iPhone 4 iOS 4 设备上 沙箱 App Store 在验证过程中报告此错误 21002 收据数据属性中的数据格式错误 在 iPhone 5 iOS 6 设备上 相同的代码可以正常工作 状态 0 收据返回 没有任何问题 我已经
  • 使用地图的地图作为 Maven 插件参数

    是否可以使用地图的地图作为 Maven 插件参数 Parameter private Map
  • 如何编辑默认的 Xcode 模板?

    当我创建 NSObject 子类时 我总是得到一个空的实现 我总是在代码中放入一些东西 例如编译指示和 dealloc 方法 我更喜欢直接删除不需要的东西 而不是每次需要的时候都从头开始写错字 我几乎总是需要 dealloc 和 init
  • 如何从 RepaintManager 生成异常

    与我的联系question may be 我发现了另一种异常类型 我无法捕获并打印出来SwingWorker thread 我怎样才能生成RepaintManager例外情况 我读了这个CheckThreadViolationRepaint
  • 字符串比较结果 b/w == 和 String#replace with == 的差异[重复]

    这个问题在这里已经有答案了 可能的重复 Java 中的字符串比较和字符串驻留 我对 Java 中的字符串比较有一点疑问 请考虑以下代码 if String replace t T String replace t T System out
  • x64 上的 Visual Studio 2015 和 tesseract 3.05

    嗯 我真的需要帮助 我的问题是如何将 tesseract 3 05 和 leptonica 1 73 库添加到 Visual Studio 2015 x64 Windows 10 去年夏天 我设法使用 Visual Studio 2013
  • 使用 XSLT 作为 XML 预处理器

    这是我第一次使用 XSLT 或 XML 做任何事情 所以请原谅 我发现 XSLT Web 文档非常简洁 我有一个 XML 文件 我想要对其进行处理 以根据输入的定义集有选择地删除内容 该行为应该类似于处理 ifdef 块的简单代码预处理器
  • asyncio 事件循环可以在后台运行而不暂停 Python 解释器吗?

    asyncio 的文档给出了如何每两秒打印一次 Hello World 的两个示例 https docs python org 3 library asyncio eventloop html asyncio hello world cal
  • Firefox 上奇怪的页面错误

    我在用着Choosen and 推特引导程序在我的项目中 这是jsfiddle http jsfiddle net Wexcode 7HLyZ 3 尝试在 2 个浏览器上打开此 jsFiddle Firefox 和 Chrome 在 chr
  • 使用泛型链接任务

    我正在尝试创建一个用于链接任务的 API 首先 我设计了一个非常简单的界面来定义任务 public interface Task
  • Azure DevOps 服务器上的批处理命令 vcvarsall.bat 出现“输入行太长”错误

    我正在 Azure DevOps 服务器管道上运行批处理文件作为批处理脚本任务 此批处理文件在内部调用英特尔并行工作室编译器 2019 更新 3 如下所示 if ERRORLEVEL NEQ 0 call ICPP COMPILER19 b
  • 如何更改悬停时的文本框内容

    我无法弄清楚如何使文本框根据悬停在哪个链接上来更改内容 我可以让它与最接近 div 的任何一个一起工作 但其他链接似乎没有效果 然而 我不想在链接之间插入文本 也不想创建多个文本框 我的主要目标是让链接始终位于同一位置 当您将鼠标悬停在链接
  • Python 如何处理全局变量?

    我在 Python 中遇到过一些非常奇怪的全局变量处理方式 我希望有人能够解释并证明这些惊喜的合理性 A 此代码按预期打印 10 def func print a a 10 func B 此代码抛出有关过早引用 a 的异常 def func