Sag*_*ard 2 python metaprogramming
在Python测试夹具中,是否可以计算函数在其体内声明的局部变量数量?
def foo():
a = 1
b = 2
Test.assertEqual(countLocals(foo), 2)
Run Code Online (Sandbox Code Playgroud)
或者,有没有办法看一个函数是否声明了任何变量?
def foo():
a = 1
b = 2
def bar():
pass
Test.assertEqual(hasLocals(foo), True)
Test.assertEqual(hasLocals(bar), False)
Run Code Online (Sandbox Code Playgroud)
我想到的用例与验证用户提交的代码有关.
是的,关联的代码对象会考虑co_nlocals属性中的所有本地名称:
foo.__code__.co_nlocals
Run Code Online (Sandbox Code Playgroud)
演示:
>>> def foo():
... a = 1
... b = 2
...
>>> foo.__code__.co_nlocals
2
Run Code Online (Sandbox Code Playgroud)
请参阅Datamodel文档:
用户定义的函数
[...]
__code__代码对象表示已编译的函数体.代码对象
[...]
特殊的只读属性:[...]
co_nlocals是函数使用的局部变量的数量(包括参数); [...]
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |