如何打印表达式而不是值?

时间:2019-07-16 08:09:36

标签: python variables expression

我正在尝试以文本格式打印给出的条件,而不是打印条件的最终值。下面是示例代码,可以提供更好的说明。

a = 5
b = 10
condition = a>b and a+b<10
if condition:
    print"successful"
else:
    print"unsuccessful"
print("The conditions applied was",condition)

在这里,我希望系统打印"a>b and a+b<10",但它会打印"False",因为条件的最终值为False

2 个答案:

答案 0 :(得分:1)

可以,但我推荐, 以字符串形式存储条件(用于打印部分),然后在实际需要该值时使用eval。像这样:

a = 5
b = 10
condition = 'a>b and a+b<10'
if eval(condition):
    print("successful")
else:
    print("unsuccessful")
print("The conditions applied was",condition)

输出:

unsuccessful
The conditions applied was a>b and a+b<10

再次:使用评估是一种错误且有害的编程习惯(一些解释,为什么可以here以及在网络上的许多其他地方找到

答案 1 :(得分:0)

自从您更新评论中的问题后,说

  

我想将结果/输出与条件(“ a> b和a + b <10”)一起保存,以便以后可以看到条件给出了什么结果。

我认为您应该使用lambda和inspect模块。

a = 5
b = 10
condition = lambda x, y: (x+y) > 10

if condition(a, b):
    print('condition passed !')
else:
    print('condition failed !')

如果要打印条件,可以看到它在做...

from inspect import getsourcelines

print("The condition was...")
print(getsourcelines(condition)[0])