用作可选参数 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