python - 是否有与 Perls 'package' 关键字等效的 Python
问题描述
我想知道,如果 Python 提供类似于Perl中的package关键字的东西。这个关键字实际上在代码的任何地方创建了一个带标签的命名空间。
据我所知,Python 中类似的命名空间只能通过将该代码放入文件并导入它来实现。但是如果我在变量中有代码(例如从我的脚本的某些配置文件中读取)怎么办?
换句话说:有没有办法在任意命名空间中评估 Python 代码?在 Perl 我只想添加
package my_pack;
在该代码的开头,然后对其进行评估(在名为my_pack的命名空间内)
谢谢你的帮助。
解决方案
不,Perl 和 Python 的模块系统的工作方式非常不同。无法显式声明特定的 Python 模块。
对于 Pythoneval()
或exec()
应在特定模块的上下文中执行代码的 Python,请考虑哪些方面为您的目的定义了该模块——重要的方面可能是该模块的全局变量。globals()
您可以显式提供这些,并通过该函数捕获当前环境。环境只是一个字典,如果你想避免修改模块的环境,你可以复制它。
推荐阅读
- ansible - Ansible:如何将多个密码文件传递给剧本
- html - 在一个锚标签内嵌套多个标签有多容易?
- javascript - 如何在 PouchDB 中使用动态字段对数据进行排序?
- user-defined-functions - js 替换功能在 Snowflake UDF 中不起作用(但在 js 预览器中工作正常)
- firebase - Flutter FireStore ,尝试通过一个请求从文档数组中获取集合数组
- spring-boot - Spring Cloud Stream binder - 无效的bean定义
- nginx - 如何允许特定 IP 访问 nginx 中的 rss feed url?
- python - 如何将字符串转换为像对象一样的字节
- laravel - Laravel 8.x PDF 文件验证无法正常工作
- react-native - 反应原生浮动文本输入样式