python - Python:导入对象语义
问题描述
看起来当我导入一个对象(例如字典)时,我得到了它的一个(深度?)副本,在导入时拍摄。
一个用例。这显然不是一个好的样式示例;我对机械很感兴趣。
run.py
:
_ARGS = RestrictedDotDict()
...
def _set_args_click(context_params: dict) -> None:
global _ARGS
_ARGS = RestrictedDotDict(copy.deepcopy(context_params))
main.py
:
from .run import _set_args_click # type: ignore
...
def main(**kwargs) -> int:
_set_args_click(click.get_current_context().params)
from .run import _ARGS # type: ignore
if _ARGS.context and not _ARGS.no_console:
...
return 0
...
return 0
此代码有效。也就是说,_ARGS
列表被初始化,并且选项对if
语句有效。
这样我得到的_ARGS
列表尚未设置:
main.py
:
from .run import _set_args_click # type: ignore
...
def main(**kwargs) -> int:
from .run import _ARGS # type: ignore
_set_args_click(click.get_current_context().params)
if _ARGS.context and not _ARGS.no_console:
...
return 0
...
return 0
这种效果意味着它_ARGS
不是对来自 的对象的引用run.py
。可能,这是有道理的:在缺少private和const的语言中,这是一种很好的安全实践。
我的麻烦:我在文档中找不到说明这种情况发生的方式和原因的地方。可能,他们有自己的术语,我不知道。
解决方案
推荐阅读
- java - 用于复杂操作的 REST API 设计
- mysql - 在 SQL 中添加与先前列对应的新列(扩展)
- react-native - 转换组件WillReceiveProps
- java - 如何解决“类型不匹配:无法从 int 转换为 boolean”java 错误?
- python - Beatifulsoup 不返回 href 它返回 None
- odoo-14 - 编译模板“web.ViewSwitcherButton”odoo 时生成的代码无效
- powershell - Bitlocker 和 Powershell
- reactjs - 如何在 react-azure-mp 中集成“onprogress”功能?
- kubernetes - 具有不同命名空间的 HPA
- cas - 应用程序未授权使用 CAS