永久免费ppt下载网站,互联网上市公司一览表,网站主题下载,青岛网站建设莫道网络在Python中#xff0c;函数本身也是对象#xff0c;所以可以将函数作为参数传入另一函数并进行调用
在旧版本中#xff0c;可以使用apply(function, *args, **kwargs)进行调用#xff0c;但是在新版本中已经移除#xff0c;以function(*args, **kwargs)进行替代#xff0…在Python中函数本身也是对象所以可以将函数作为参数传入另一函数并进行调用
在旧版本中可以使用apply(function, *args, **kwargs)进行调用但是在新版本中已经移除以function(*args, **kwargs)进行替代所以也不应该再使用apply方法
示例代码
def func_a(func, *args, **kwargs):
print(func(*args, **kwargs))
def func_b(*args):
return args
if __name__ __main__:
func_a(func_b, 1, 2, 3)
在代码中将函数func_b作为函数func_a的参数传入将函数func_b的参数以元组args传入并在调用func_b时作为func_b的参数。
运行结果
(1, 2, 3)
但是这里存在一个问题但func_a和func_b需要同名的参数时就会出现异常如
def func_a(arg_a, func, **kwargs):
print(arg_a)
print(func(**kwargs))
def func_b(arg_a):
print(arg_a)
if __name__ __main__:
func_a(arg_aHello Python, funcfunc_b)
异常信息
TypeError: func_b() missing 1 required positional argument: arg_a
虽然通过修改手动将arg_a作为参数传入func中进行调用可以正常运行但这明显不符合设计初衷在func_a中执行func(**kwargs)时很可能并不知道func到底需要什么参数。换句话说如果已经提前知道需要调用什么函数那完全不必要把函数作为参数传入另一个函数并调用直接调用函数即可。
def func_a(arg_a, func, **kwargs):
print(arg_a)
func(arg_aarg_a, **kwargs)
def func_b(arg_a):
print(arg_a)
if __name__ __main__:
func_a(arg_aHello Python, funcfunc_b)
当加入第三个函数func_c它不需要arg_a这个参数时就会出现问题。
def func_a(arg_a, func, **kwargs):
print(arg_a)
func(arg_aarg_a, **kwargs)
def func_b(arg_a):
print(arg_a)
def func_c():
print(Hello World)
if __name__ __main__:
func_a(arg_aHello Python, funcfunc_b)
func_a(arg_aHello Python, funcfunc_c)
以上这篇在Python中将函数作为另一个函数的参数传入并调用的方法就是小编分享给大家的全部内容了希望能给大家一个参考也希望大家多多支持脚本之家。