当使用
for sig in inspect.signature.parameters.items():
if isinstance(sig[1].annotation, inspect._empty):
print("empty")
我从来没有得到控制台说打印 "空"。即使在使用
print(sig[1].annotation)
前的if子句给我的输出。<class 'inspect._empty'>
.我也试过用这样的字符串比较。
if sig[1].annotation == "<class 'inspect._empty'>":
print("empty")
问题出在哪里?
不要使用 isinstance
,只是检查 is inspect._empty
即
for sig in inspect.signature.parameters.items():
if sig[1].annotation is inspect._empty:
print("empty")
或最好使用记录在案的 Signature.empty
或 Parameter.empty
. 它们都是一样的,但尽量避免使用受保护的属性,即那些以 _
.