python - 函数签名中的默认参数初始化
问题描述
为什么在加载模块时会执行函数签名中的默认参数?示例test.py
:
import os
def environment_key(key=os.environ["MY_ENV_KEY"]):
print(key)
当我在test.py
on cmd 行加载时,python -m test.py
出现以下错误:
bash-4.2# python -m test.py
Traceback (most recent call last):
File "/usr/lib64/python2.7/runpy.py", line 163, in _run_module_as_main
mod_name, _Error)
File "/usr/lib64/python2.7/runpy.py", line 102, in _get_module_details
loader = get_loader(mod_name)
File "/usr/lib64/python2.7/pkgutil.py", line 462, in get_loader
return find_loader(fullname)
File "/usr/lib64/python2.7/pkgutil.py", line 472, in find_loader
for importer in iter_importers(fullname):
File "/usr/lib64/python2.7/pkgutil.py", line 428, in iter_importers
__import__(pkg)
File "test.py", line 4, in <module>
def environment_key(key=os.environ["MY_ENV_KEY"]):
File "/usr/lib64/python2.7/UserDict.py", line 40, in __getitem__
raise KeyError(key)
KeyError: 'MY_ENV_KEY'
据我所知,Python 尝试在模块加载时初始化默认参数。我可以防止(延迟加载)这种行为吗?
谢谢
解决方案
推荐阅读
- android - Android 11 中的 Android 权限 MANAGE_EXTERNAL_STORAGE
- r - 在 renderUI 中解析 HTML
- python - 在 SQL Alchemy 中按名称从表中提取所有数据
- react-bootstrap - 如何在使用 LinkContainer 时删除“活动”NavDropdown.Item 上的蓝色背景?
- c# - 在单个应用程序中进行用户和员工身份验证的最佳方式是什么?
- java - Javassist 获取底层对象
- kotlin - 值和发射之间的 MutableStateFlow 差异
- trace - 是否可以查看正在运行的 LTTng 跟踪会话的跟踪?
- javascript - 如何在 for 循环中使用 response.send 方法
- ios - UICollectionViewCompositionalLayout 不会滚动到不完整的组