检查比较值是否是值或函数然后进行比较的Python方法

时间:2019-04-03 15:56:18

标签: python

我需要对照其他f来检查值,该值要么只是一个值,要么是可调用的东西,它可以根据另一个变量p的值返回一个值。如果存在,我正在寻找一种比我在下面写的更加Python化的方法:

p = 5  # Some value that is available in the code

def check_val(x):
    if callable(x):
        return x(p)
    else:
        return x

#Either/or
f = 1
f = lambda a: 1.5*a

if 2 < check_val(f):
    print("no good")

1 个答案:

答案 0 :(得分:-1)

由于控制流取决于对象类型,因此您应该能够在types模块中找到相关的类型类。

import types # see https://docs.python.org/3/library/types.html

p = 5  # Some value that is available in the code

def check_val(x, p):
    if isinstance(x, (types.FunctionType, types.LambdaType):
        return x(p)
    else:
        return x

#Either/or
f = 1
f = lambda a: 1.5*a

if 2 < check_val(f, p):
    print("no good")