Pythonic检查比较值是否为值或函数的方法,然后比较
我需要将一个值与另一个值进行比较,Pythonic检查比较值是否为值或函数的方法,然后比较,python,Python,我需要将一个值与另一个值进行比较,f,它要么只是一个值,要么是基于另一个变量p的值返回值的可调用值。我正在寻找一种比我在下面写的更具蟒蛇风格的方法来实现这一点,如果存在的话: 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 = lamb
f
,它要么只是一个值,要么是基于另一个变量p
的值返回值的可调用值。我正在寻找一种比我在下面写的更具蟒蛇风格的方法来实现这一点,如果存在的话:
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")
p=5#代码中可用的一些值
def检查值(x):
如果可调用(x):
返回x(p)
其他:
返回x
#或
f=1
f=λa:1.5*a
如果2<检查值(f):
打印(“不好”)
由于控制流取决于对象类型,您应该能够在类型
模块中找到相关的类型类
导入类型#请参见https://docs.python.org/3/library/types.html
p=5#代码中可用的某个值
def检查值(x,p):
如果isinstance(x,(types.FunctionType,types.LambdaType):
返回x(p)
其他:
返回x
#或
f=1
f=λa:1.5*a
如果2<检查值(f,p):
打印(“不好”)
这不是我想的,但是你可以试着把它贴出来,看看其他人是否有灵感。写两个不同的函数,check\u value
和check\u predicate\u反对\u p
。我建议你试着调用x(p)
并捕获如果x
不可调用而引发的TypeError
,但无法区分不可调用的x
和调用x的情况(p)
本身会引发未捕获的类型错误
。Python是动态类型的,但您至少应该尝试将具有类似接口的值分配给给定变量。函数(和其他可调用项)与不可调用的值几乎没有共同之处。您不会说如何设置f
,但是传递lambda:x
会让check\u val
无条件地将其参数视为函数,同时仍然返回x
的结果。除了FunctionType
和LambdaType>之外,还有其他可调用项代码>。你是对的。示例使用了lambda。如果我的答案正确但不完整,你可以编辑它或建议编辑。但它是错的吗?