相关疑难解决方法(0)

如何检测Python变量是否为函数?

我有一个变量,x我想知道它是否指向一个函数.

我希望我可以这样做:

>>> isinstance(x, function)
Run Code Online (Sandbox Code Playgroud)

但这给了我:

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
NameError: name 'function' is not defined
Run Code Online (Sandbox Code Playgroud)

我选择它的原因是因为

>>> type(x)
<type 'function'>
Run Code Online (Sandbox Code Playgroud)

python

629
推荐指数
15
解决办法
23万
查看次数

如何确定函数是否已被`lambda`或`def`声明?

如果我声明两个函数,a并且b:

def a(x):
    return x**2

b = lambda x: x**2
Run Code Online (Sandbox Code Playgroud)

我无法type区分它们,因为它们都属于同一类型.

assert type(a) == type(b)
Run Code Online (Sandbox Code Playgroud)

另外,types.LambdaType没有帮助:

>>> import types
>>> isinstance(a, types.LambdaType)
True
>>> isinstance(b, types.LambdaType)
True
Run Code Online (Sandbox Code Playgroud)

人们可以使用__name__如下:

def is_lambda_function(function):
    return function.__name__ == "<lambda>"

>>> is_lambda_function(a)
False
>>> is_lambda_function(b)
True
Run Code Online (Sandbox Code Playgroud)

但是,由于__name__可能已被修改,is_lambda_function因此无法保证返回正确的结果:

>>> a.__name__ = '<lambda>'
>>> is_lambda_function(a)
True
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以产生比__name__属性更可靠的结果?

python lambda types function function-declaration

4
推荐指数
1
解决办法
112
查看次数

标签 统计

python ×2

function ×1

function-declaration ×1

lambda ×1

types ×1