无法通过 exec() 语句更改函数中的全局变量?

2024-04-21

为什么我不能使用 exec() 从函数内部更改全局变量?当赋值语句位于 exec() 之外时,它可以正常工作。这是我的问题的一个例子:



>>> myvar = 'test'
>>> def myfunc():
...     global myvar
...     exec('myvar = "changed!"')
...     print(myvar)
... 
>>> myfunc()
test
>>> print(myvar)
test
  

Per the docs http://docs.python.org/reference/simple_stmts.html#the-exec-statement, the exec语句采用两个可选表达式,默认为globals() and locals(),并且始终在中执行更改(如果有)locals() one.

所以,只要更明确/具体/精确......:

>>> def myfunc():
...   exec('myvar="boooh!"', globals())
... 
>>> myfunc()
>>> myvar
'boooh!'

...你将能够随心所欲地破坏全局变量。

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

无法通过 exec() 语句更改函数中的全局变量? 的相关文章

  • 无法在我的 Django 项目中使用 Sphinx 生成自动文档

    我正在向我的 Django 项目添加文档 github链接 https github com augustakingfoundation queryjane app 该项目是开源的 使用sphinx 但是当尝试生成python文件的auto
  • 如何更改默认的Python版本?

    我已经在我的 Mac 上安装了 Python 3 2 我跑完之后 Applications Python 3 2 Update Shell Profile command 当我输入时 这很令人困惑Python V在终端它说Python 2
  • 分配列表的多个值

    我很想知道是否有一种 Pythonic 方式将列表中的值分配给元素 为了更清楚 我要求这样的事情 myList 3 5 7 2 a b c d something myList So that a 3 b 5 c 7 d 2 我正在寻找比手
  • Python Numpy Reshape错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试重塑 3D numpy 数组时遇到一个奇怪的错误 数组 x 的形状为 6 10 300 我想将其重塑为 6 3000 我正
  • 在推送到容器注册表之前如何对构建的映像运行测试?

    从 gitlab 文档中可以看出如何使用 kaniko 创建 docker 镜像 build stage build image name gcr io kaniko project executor debug entrypoint sc
  • sy.sympify(str(表达式)) 不等于表达式

    据我了解 str将 SymPy 表达式转换为字符串并sympify将字符串转换为 SymPy 表达式 因此 我希望以下内容成立 对于合理的表达 gt gt gt sy sympify str expr expr True 我尝试过这个 确实
  • 如何将脚本作为 pytest 测试运行

    假设我有一个用简单脚本表示的测试assert 陈述 请参阅背景了解原因 例如 import foo assert foo 3 4 我如何以一种好的方式将该脚本包含在我的 pytest 测试套件中 我尝试了两种有效但不太好的方法 一种方法是将
  • Python 中 time.sleep 和多线程的问题

    我对 python 中的 time sleep 函数有疑问 我正在运行一个脚本 需要等待另一个程序生成 txt 文件 虽然 这是一台非常旧的机器 所以当我休眠 python 脚本时 我遇到了其他程序不生成文件的问题 除了使用 time sl
  • Karasuba算法递归过多

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1
  • 无法在我的程序中使用 matplotlib 函数

    我正在 Windows 10 中运行 Anaconda 安装 conda 版本 4 3 8 这是我尝试在 python 命令行中运行的代码 import matplotlib pyplot as plt x 1 2 3 4 y 5 6 7
  • 打印一份拥有多个家庭的人员名单,每个家庭都有多个电话号码

    我有一类 Person 它可以有多个 Home 每个 Home 都有一个或多个电话号码 我已经定义了类 但现在我正在尝试创建一个视图 其中列出每个人的所有家庭以及每个家庭地址的所有电话号码 类似于 john smith 123 fake s
  • Jupyter笔记本突然变得很慢

    我以前在anaconda环境下运行jupyter运行得很好 显示警告后 IOPub data rate exceeded The notebook server will temporarily stop sending output to
  • 使用 Windows 任务计划程序安排 [Virtualenv 相关] Python 脚本

    I want to schedule a python script to start at 3AM and break at 5PM every weekday However the problem arises when I need
  • 如何让 Streamlit 每 5 秒重新加载一次?

    我必须每 5 秒重新加载 Streamlit 图表 以便在 XLSX 报告中可视化新数据 如何实现这一目标 import streamlit as st import pandas as pd import os mainDir os pa
  • 操作错误:尝试在 ubuntu 服务器中写入只读数据库

    我正在使用 FlaskApp 运行mod wsgi and apache2在 Ubuntu 服务器上 我尝试运行烧瓶应用程序localhost成功 然后部署到ubuntu服务器上 但是当我尝试更新数据库时 出现错误 Failed to up
  • 如何在 Python 中跟踪日志文件?

    我想在 Python 中提供 tail F 或类似内容的输出 而无需阻塞或锁定 我找到了一些非常旧的代码来做到这一点here http code activestate com recipes 436477 filetailpy 但我认为现
  • 通过新数据更新绘图,而不是在 Jupyter 笔记本中制作新绘图

    我有一些问题 希望你能帮我解决 我需要使用下拉小部件创建交互式绘图 我可以在其中选择并绘制感兴趣的数据 我通过以下方式做到这一点 import plotly graph objects as go import ipywidgets as
  • 使用 Numpy 进行多维批量图像卷积

    在图像处理和分类网络中 一个常见的任务是输入图像与一些固定滤波器的卷积或互相关 例如 在卷积神经网络 CNN 中 这是一种极其常见的操作 我已将通用版本任务减少为 Given 一批 N 个图像 N H W D 和一组 K 个滤镜 K H W
  • 如何在supervisord中设置组?

    因此 我正在设置 Supervisord 并尝试控制多个进程 并且一切正常 现在我想设置一个组 以便我可以启动 停止不同的进程集 而不是全部或全无 这是我的配置文件的片段 group tapjoy programs tapjoy game1
  • 如何在 Qt 中以编程方式制作一条水平线

    我想弄清楚如何在 Qt 中制作一条水平线 这很容易在设计器中创建 但我想以编程方式创建一个 我已经做了一些谷歌搜索并查看了 ui 文件中的 xml 但无法弄清楚任何内容 ui 文件中的 xml 如下所示

随机推荐

  • 如何在 Perl 脚本中调用 shell 命令?

    我如何调用 shell 命令的示例是什么 比如 ls a 在 Perl 脚本中以及检索命令输出的方法 如何从 Perl 程序运行 shell 脚本 http www perlmonks org node id 78523 1 使用系统sys
  • 使用powershell刷新网页

    我只需要使用powershell刷新当前网页 但是所有打开的网页都在刷新 我的代码在这里 function Refresh WebPages param interval 5 Refreshing IE Windows every inte
  • 如何获取指向引用成员的指针?

    考虑这段代码 struct AA int rr 有没有办法获取指向的指针 或引用 AA rr为了获得这个 AA aa auto mm AA rr error cannot create pointer to reference member
  • CMake:如何在多个文件上运行自定义命令来生成源文件?

    我有以下情况 我想编译一些Scheme文件Gambit https github com gambit gambit成可执行文件 为此 我使用 gambit 将所有计划文件翻译 生成为 C 和目标文件 然后将其编译并链接为可执行文件 假设我
  • 数据库关系 1:1 vs 1:0..1

    我正在努力了解这些关系 正如我下面所示 它是否正确 1 我会有一个1 0 1通过简单地使父级的身份密钥也是子级的身份密钥来建立关系 2 为了做到这一点1 1 我在父表中添加一个FK 连接两个Identity列 这就是全部内容了吗 如果我的措
  • 在 Numpy 中预处理 Tensorflow 张量

    我在 Tensorflow 中设置了一个 CNN 用 TFRecordReader 读取数据 它工作得很好 但我想做一些比提供的更多的预处理和数据增强tf image功能 我特别想做一些随机缩放 是否可以在 Numpy 中处理 Tensor
  • 无法定义静态抽象字符串属性

    我遇到了一个有趣的问题 正在寻找一些关于如何最好地处理这个问题的建议 我有一个抽象类 其中包含一个静态方法 该方法接受我想定义为抽象属性的静态字符串 问题是 C 不支持以下内容 请参阅配置部分名称 and Current特性 public
  • 如何使用WebView中的id填充HTML输入中的值

    我的里面有 HTML 页面WebView有输入 输入有id 姓名 如何用一些字符串填充活动的输入 您可以尝试以下操作 mWebView loadUrl javascript document forms myform id value ne
  • 神经网络中“特征”的定义是什么?

    我是神经网络的初学者 我对这个词很困惑feature 你能给我一个定义吗feature 这些特征是隐藏层中的神经元吗 这些特征是输入向量的元素 特征的数量等于网络输入层的节点数量 如果您使用神经网络根据物理属性的测量将动物分类为猫或狗 那么
  • 构建失败 - TFS2008 上的 VS2010 解决方案

    我已将 VS2008 ASP NET MVC 解决方案迁移到 VS2010 MVC2 NET 4 0 该解决方案在本地构建 并且所有单元测试都通过 我们的 TFS 服务器仍然是 TFS2008 我在通过 CI 构建时遇到问题 项目全部构建成
  • 如何检测何时使用history.pushState和history.replaceState? [复制]

    这个问题在这里已经有答案了 当历史状态修改时 我可以订阅一些事件吗 如何 我曾经用它来通知何时pushState and replaceState叫做 Add this var wr function type var orig histo
  • 我可以删除[]一个指向已分配数组但不指向其开头的指针吗?

    我特别想知道以下情况 我在一些我必须使用的代码中发现的 SomeClass ar new SomeClass 2 ar delete ar 这段代码似乎工作正常 即没有崩溃 win32 用 VS2005 构建 这 合法 吗 感觉肯定不对 不
  • Windows 窗体应用程序的退出代码

    如何从 Windows 窗体应用程序返回非零退出代码 Application Exit 是退出应用程序的首选方法 但没有退出代码参数 我知道Environment Exit 但这不是关闭应用程序循环的好方法 Application Exit
  • 如果 Spring 应用程序无法连接到其配置服务器,则会快速失败

    假设您有一个 Spring 应用程序 它从配置服务器获取其配置 如果无法连接到配置服务器 应用程序将继续启动 但由于所有配置都丢失 它最终将失败并出现潜在的误导性错误 是否可以配置 Spring 使其在启动期间无法连接到其配置服务器时立即中
  • 将用户输入的字符串转换为正则表达式

    我正在用 HTML 和 JavaScript 设计一个正则表达式测试器 用户将输入正则表达式 字符串 并通过单选按钮选择他们想要测试的函数 例如搜索 匹配 替换等 程序将在使用指定参数运行该函数时显示结果 当然 会有额外的文本框用于替换额外
  • 为什么我的 UITableView 从 UITableViewStyleGrouped 更改为 UITableViewStylePlain

    我的应用程序有一个扩展的视图控制器UITableViewController 初始化方法如下所示 id initWithCoder NSCoder coder if self super initWithCoder coder self t
  • MySQL 用通配符替换

    我正在尝试编写 SQL 更新以用新字符串替换特定的 xml 节点 UPDATE table SET Configuration REPLACE Configuration
  • 如果 editable false,fullCalendar eventClick 处理程序将不起作用

    jQuery fullCalendar 插件似乎有问题可编辑模式 http arshaw com fullcalendar docs event ui editable 在某些情况下 如果事件点击处理程序 http arshaw com f
  • 从 android 中的 firebase 发送通知时没有通知声音

    我正在从 firebase 向我的 Android 应用程序发送推送通知 但是当我的应用程序处于后台时 不会调用 firebase onMessageReceived 方法 而是 firebase 向系统发送通知以在系统托盘中显示通知 通知
  • 无法通过 exec() 语句更改函数中的全局变量?

    为什么我不能使用 exec 从函数内部更改全局变量 当赋值语句位于 exec 之外时 它可以正常工作 这是我的问题的一个例子 gt gt gt myvar test gt gt gt def myfunc global myvar exec