python - python 可以处理未计算的表达式参数吗?

标签 python

我想将一条语句传递给 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/

相关文章:

python - 我可以指望在 Python 元组中保留顺序吗?

python - 在我的 Eclipse 项目中重命名源文件logging.py之一后,无法导入logging.py

python - 奇怪的 JSON 到 CSV 的转换

python - 如何使用 pyntcloud 库将点云转换为网格

Python 用不必要的字符填充字符串

python - 月份范围计算未返回预期结果

python - 是否值得将 IPython 与 scipy 的 eig 并行使用?

python - Google App Engine - 将 key 存储到ndb KeyProperty中

开始新月份时的 Python 日期问题

python - Google App Engine 模板循环遍历两个变量