python - 如何在不使用括号的情况下调用 Python 部分?
问题描述
假设下面的代码:
from functools import partial
import random
def integer(min=1, max=10):
return random.randint(min, max)
def double(min=1, max=10):
return random.uniform(min, max)
if __name__ == '__main__':
p1 = partial(integer, 5, 10)
p2 = partial(double, 5, 10)
for f in [p1, p2]:
f() # I'd like to know if there's a different way to call this like `call(f)` or something
正如评论中提到的,我想知道是否有一种方法可以在f
不使用括号的情况下进行调用。更进一步,假设我可以f
在不使用括号的情况下调用,如果我想将其他参数传递给f
,我该怎么做(比如call(f, additional_param_1, additional_param_2)
)?
预先感谢您的回答!
解决方案
不在基础 Python 中,但您可以轻松编写call()
自己的代码:
from functools import partial
import random
def integer(min=1, max=10):
return random.randint(min, max)
def double(min=1, max=10):
return random.uniform(min, max)
def call(f, *args, **kwargs):
return f(*args, **kwargs)
if __name__ == '__main__':
p1 = partial(integer, 5, 10)
p2 = partial(double, 5, 10)
for f in [p1, p2]:
call(f)
注意:您的示例中有一个错字,您正在调用partial
on int
,但您的函数被调用integer
。(这两个名字都不是很好,我认为您正在尝试解决您没有说明的问题,但有更好的解决方案)
推荐阅读
- visual-studio-code - VS Code 的 runSelectedText 可以在执行前获取函数或剥离部分命令吗?
- visual-studio - Blazor .net 核心引用枚举?参数不改变其值
- android - Android - 手动卸载后启动器图标不会重新出现
- c# - 当我尝试将文件从 txt 导入到 datagridview 时出现错误
- javascript - Node.js 中的路由
- wireshark - 使用 Wireshark 检查 pcap 文件:[在捕获期间限制数据包大小]
- google-cloud-platform - 使用私有 IP 将本地环境连接到 CloudSQL
- plotly - Plotly Dash 图例中的自定义标记
- python - Tornado 服务器在多进程模式下处理不平均的请求
- java - SpringBoot 应用程序:CPU 使用率有时会达到最大值