python - Python:是否可以将参数默认为全局名称空间中的变量?
问题描述
我想知道我是否可以获得以下行为:
a=5
def func(arg2=a):
bah blah
因此,当我可以func
不带参数的函数时a
,除非我喂别的东西,否则它将被采用。
解决方案
是的你可以。当您的脚本运行时,该行将def func(arg2=a):
被评估一次,以创建一个函数对象。默认值将绑定到当时a
引用的对象。这意味着如果您a
稍后在脚本中进行更改,函数的默认参数将不会更改。这也是您不想使用可变容器作为默认参数的原因。
如果要使用 global 的动态值,则a
需要在运行时在函数本身内对其进行评估。一种惯用的做法是
def func(arg2=None):
if arg2 is None:
arg2 = a
blah blah blah
None
只是用于表示“无输入”的常用值。您可以使用任何适合您需要的实际哨兵值。
推荐阅读
- php - 在 Symfony 5 中处理异常时未定义的 getException 方法
- visual-studio - 如何在 SSAS / Visual Studio 中修改多维数据集(表格)?
- reactjs - 使用 React Redux,点击侧边栏上的链接(重定向)同时清除搜索栏中的输入
- python - ssh:发送包含 RETURN 的 tmux 命令
- excel - 重命名或处理从其他工作表复制的图片
- html - 有人可以解释一下 CSS 中的“溢出”到底对这个例子中的背景做了什么吗?
- python - 使用python3执行脚本的问题
- reactjs - 尽管状态已更新,但不会重新渲染子组件
- asp.net-core - 浏览器如何向服务器发出取消信号?
- javascript - 如何取回单选按钮的检查值?