Create a callable object with arguments already supplied in Python
本问题已经有最佳答案,请猛点这里访问。
本质上,我试图将参数传递给函数,但推迟执行该函数直到以后。 我不想延迟一段时间,或者我只想
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import requests def test_for_active_server(server_address): response = requests.get(server_address) try_n_times(func, expected_error, n_iterations): for i in range(n_iterations): try: func() break except expected_error: continue else: return False return True try_n_times( create_callable(test_for_active_server("http://localhost/"), requests.ConnectionError, 10) |
这里的问题当然是当我调用
1 2 3 4 | def create_callable(func, func_args: List[str], func_kwargs: Dict[str, str], *args): def func_runner(): func(*args, *func_args, **func_kwargs) return func_runner |
然后用它作为
1 | create_callable(test_for_active_server,"http://localhost") |
但这很尴尬。 有一个更好的方法吗?
你在寻找
您可以提供所有参数,因此您可以执行以下操作:
1 2 3 | obj = functools.partial(test_for_active_server, server_address="http://localhost/") # ...do other things... obj() |