用作可选参数 python
function as an optional parameter python
我正在尝试编写一个函数来检查是否将参数传递给它(这是一个函数),如果是,则使用参数调用该函数,否则如果没有给出任何参数 return 一个值所以我的方法是这样的:
def nine(fanc=None):
if(fanc!=None): return fanc(9,fanc)
return 9
但是这段代码出现了一个错误:
TypeError: 'int' object is not callable
我知道这种方法不正确,但我找不到任何其他方法来这样做
我也尝试过以这种方式使用 *args
但最终得到相同的结果:
def nine(*args):
if(len(args)!=0): return args[0](9,args)
return 9
我试着猜你想要什么,但这段代码可能对你有帮助:
def fct(**kwargs):
if 'func' in kwargs:
f = kwargs['func']
return f(9)
else:
return 9
def f(x):
return x**2
print(fct()) # result = 9
print(fct(func=f)) # result = 81
您可能会使用 callable
内置函数,请考虑以下示例
def investigate(f=None):
if callable(f):
return "I got callable"
return "I got something else"
print(investigate())
print(investigate(min))
输出:
I got something else
I got callable
请注意,可调用是比函数更广泛的术语,因为它还包含具有 __call__
方法的对象。
如果您想检查传递的参数是否为函数,如果是,则使用固定参数执行它,您可以尝试以下操作:
from typing import Union
from types import FunctionType
def nine(func: Union[FunctionType, None] = None):
if type(func) is FunctionType:
return func(9)
return 9
我正在尝试编写一个函数来检查是否将参数传递给它(这是一个函数),如果是,则使用参数调用该函数,否则如果没有给出任何参数 return 一个值所以我的方法是这样的:
def nine(fanc=None):
if(fanc!=None): return fanc(9,fanc)
return 9
但是这段代码出现了一个错误:
TypeError: 'int' object is not callable
我知道这种方法不正确,但我找不到任何其他方法来这样做
我也尝试过以这种方式使用 *args
但最终得到相同的结果:
def nine(*args):
if(len(args)!=0): return args[0](9,args)
return 9
我试着猜你想要什么,但这段代码可能对你有帮助:
def fct(**kwargs):
if 'func' in kwargs:
f = kwargs['func']
return f(9)
else:
return 9
def f(x):
return x**2
print(fct()) # result = 9
print(fct(func=f)) # result = 81
您可能会使用 callable
内置函数,请考虑以下示例
def investigate(f=None):
if callable(f):
return "I got callable"
return "I got something else"
print(investigate())
print(investigate(min))
输出:
I got something else
I got callable
请注意,可调用是比函数更广泛的术语,因为它还包含具有 __call__
方法的对象。
如果您想检查传递的参数是否为函数,如果是,则使用固定参数执行它,您可以尝试以下操作:
from typing import Union
from types import FunctionType
def nine(func: Union[FunctionType, None] = None):
if type(func) is FunctionType:
return func(9)
return 9