python可以处理未赋值的表达式参数吗?

python可以处理未赋值的表达式参数吗?,python,Python,我想向python函数传递一条语句。只有在我在函数中执行了一些其他操作之后,才能执行此语句。默认情况下,python对语句求值,然后将其结果作为参数传递 有没有办法改变这种行为 我找到的唯一方法是将语句包装在函数中,然后传递函数。否这是不可能的。表达式求值的结果传递给函数,而不是表达式本身。您需要将语句包装在函数或lambda表达式中。大多数Python程序员都认为传递函数是解决此问题的最自然、最安全和最可维护的方法: In [ 2]: add_one = lambda a: a+1 In [

我想向python函数传递一条语句。只有在我在函数中执行了一些其他操作之后,才能执行此语句。默认情况下,python对语句求值,然后将其结果作为参数传递

有没有办法改变这种行为


我找到的唯一方法是将语句包装在函数中,然后传递函数。

否这是不可能的。表达式求值的结果传递给函数,而不是表达式本身。您需要将语句包装在函数或lambda表达式中。

大多数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

老实说,我不明白你为什么要这样做。

我找到的唯一方法是将我的语句包装在函数中,然后传递函数。
这不是坏事,伙计。你只能传递函数或lambda(内联函数)。