![](/img/trans.png)
[英]How can I handle missing values in the dictionary when I use the function eval(String dictionary) -> dictionary PYTHON?
[英]Can I use 'eval' to define a function in Python?
我想使用 eval 定义一个 Python 函数:
func_obj = eval('def foo(a, b): return a + b')
但它返回无效的语法错误? 我怎样才能做到?
顺便说一句,如何在 Python 中将函数 obj 转换为字符串对象?
使用exec
。 eval
用于表达式而不是语句。
>>> exec 'def foo(a, b): return a + b'
>>> foo(1, 2)
3
来自函数对象的函数代码:
def func():
""" I'm func """
return "Hello, World"
...
>>> import inspect
>>> print inspect.getsource(func)
def func():
""" I'm func """
return "Hello, World"
您可以将eval
与lambda
一起使用,例如:
func_obj = lambda a, b: eval('a + b')
def test_eval():
exec('def foo(a, b): return a + b')
foo(1, 2)
@niitsuma 此代码将返回错误: NameError: name 'foo' is not defined
这是因为 foo 是在您执行它的其他范围内定义的。 要修复它并使其在外部范围内可见,您可以创建 foo 全局变量:
def test_eval():
exec('global foo\ndef foo(a, b): return a + b')
foo(1, 2)
我写
def test_eval():
exec('def foo(a, b): return a + b')
foo(1, 2)
在mypackage/tests/test_mycode.py
使用适当的mypackage/setup.py
。 但是python setup.py test
导致NameError: name 'foo' is not defined
。
如何从字符串测试代码?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.