首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么within exec()函数可以在原始代码中工作,而不能在Python3.7中的函数或类中工作?

在原始代码中,exec()函数可以执行动态生成的代码字符串。它将字符串作为参数,并在当前的全局命名空间中执行该字符串表示的代码。这意味着在执行exec()函数时,代码将在当前的命名空间中执行,可以访问和修改全局变量。

然而,在Python3.7中的函数或类中,exec()函数的行为有所不同。在函数或类中,每个函数或类都有自己的局部命名空间,而不是共享全局命名空间。因此,当在函数或类中使用exec()函数时,它将在该函数或类的局部命名空间中执行代码,而不是在全局命名空间中执行。

这种行为的改变是为了增加代码的可靠性和安全性。在函数或类中使用exec()函数可能导致意外的副作用,因为它可以修改局部变量,而这些变量可能在函数或类的其他部分使用。此外,函数或类的局部命名空间是在运行时动态创建的,因此在编写代码时无法预先确定。

如果需要在函数或类中执行动态生成的代码,可以考虑使用eval()函数。eval()函数可以计算并执行单个表达式,并返回结果。与exec()函数不同,eval()函数只能执行单个表达式,而不能执行多行代码。但是,需要注意的是,使用eval()函数也可能存在安全风险,因为它可以执行任意的Python表达式。

总结起来,exec()函数在原始代码中可以工作,因为它在全局命名空间中执行代码。然而,在Python3.7中的函数或类中,exec()函数无法工作,因为它在函数或类的局部命名空间中执行代码,而不是在全局命名空间中执行。如果需要在函数或类中执行动态生成的代码,可以考虑使用eval()函数,但需要注意安全性问题。

相关搜索:为什么像箭头函数这样的方法可以在react类中工作,而不能在普通类中工作?为什么`eval`不能在Python类函数中工作?为什么这个合并排序代码可以在python中工作,而不能在javascript中工作?为什么getCurrentInterruptionFilter BroadcastReceiver可以在快速设置中工作,而不能在设置中工作?为什么我的代码可以在pycharm中工作,但不能在visual studio代码中工作?为什么这可以在for循环中工作,而不能在forEach中工作?(数组不是构造函数错误)为什么我的scanf不能在函数中工作?为什么hangfire仪表板可以在开发中工作,而不能在部署中工作为什么我的导入可以在pycharm中工作,而不能在命令行中工作?为什么Protobuf的fromJson()函数在Dart中不工作为什么我在Apify中的infiniteScroll函数不工作?为什么我的回调函数不能在嵌套函数中工作?类中的函数在被调用时不工作(python)为什么clojure函数在core.cljs [试剂]中不工作或崩溃?Javascript函数可以在JSFiddle上工作,但不能在我的HTML文档中工作?php array_filter可以在函数中工作,但不能作为方法在类中工作。为什么其中的onTap和函数不能在InkWell中工作?为什么我的map函数不能在数组中工作?为什么我的javascript函数不能在整个页面中工作为什么这个查询可以在mongo shell中工作,而不能在node mongo驱动程序中工作?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【万字专栏总结】离线强化学习(OfflineRL)总结(原理、数据集、算法、复杂性分析、超参数调优等)

    强化学习发展的特别早,但一直不温不火,其中Sutton老爷子早在1998年就写了强化学习领域的圣经书籍:An Introduction : Reinforcement Learning ,但也并未开启强化学习发展的新局面。直到2012年,深度学习广泛兴起,大规模的神经网络被成功用于解决自然语言处理,计算机视觉等领域,人工智能的各个方向才开始快速发展,强化学习领域最典型的就是2013年DeepMind公司的Volodymyr Mnih发表Playing Atari with Deep Reinforcement Learning(DQN技术),可以说开启了深度强化学习技术发展的新高潮,2015年该论文的加强版Human-level control through deep reinforcement learning 登上Nature, 以及2016年Nature上的AlphaGo: Mastering the game of Go with deep neural networks and tree search 充分证明了深度强化学习技术的发展潜力。

    02

    Selenium3元素定位详解与封装

    在学习自动化测试之前,首先需要思考清楚的是为什么需要学习自动化测试,以及今天业界谈的研发效能对测试而言意味着什么?其实这就需要在测试以及整体研发的角度来思考问题,在今天这样的市场环境中,打造高质量的持续交付产品质量,基本是所有互联网研发团队的测试团队都追求的一个方向。在敏捷流行的今天,以及新的技术在企业全面的落地,在测试而言,就需要通过测试技术的手段以及质量管理的思维能力,来提升测试效率,和交付满足市场期待的产品质量。自动化测试是所有测试形式里面在目前而言,是最基础的也是最核心的,因为自动化测试连接了功能测试以及高阶的测试开发的测试技术栈的知识体系。即使初级的测试同学,也得具备自动化测试的思维能力和技术能力。

    02
    领券