我想将一条语句传递给 python 函数。该语句只应在我在函数中执行其他操作后执行。默认情况下,python 计算语句,然后将其结果作为参数传递。
有什么办法可以改变这种行为吗?
我发现的唯一方法是将语句包装在函数中,然后传递该函数。
大多数 Python 程序员都认为传递函数是解决此问题的自然、最安全且最可维护的方法:
In [ 2]: add_one = lambda a: a+1
In [ 3]: def my_func2(a, statement):
....: print a
....: a = statement(a)
....: print a
....:
In [ 4]: a
Out[ 4]: 9
In [ 5]: my_func2(a, add_one)
9
10
但有一个exec
声明提供了一种不自然、不安全且可能令人困惑的替代方案:
In [ 6]: def my_func(a, statement):
....: print a
....: exec(statement)
....: print a
....:
In [ 7]: a = 9
In [ 8]: my_func(a, 'a += 1')
9
10
老实说,我不明白你为什么要这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)