我想将一条语句传递给 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
老实说,我不明白你为什么要这样做。
关于python - python 可以处理未计算的表达式参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871960/