如何在以下代码中返回if not 2 >= 3:
的布尔值?
如何从if语句之前获得结果的值?我知道它的“真实”,但是我怎么指代它呢?
def using_control_once():
if not 2 >= 3:
return "Success"
print using_control_again()
def using_control_once():
if not 2 >= 3:
return "Controlled"
print using_control_once()
我想在评估not 2 >= 3
之后打印if语句的值,而不是返回函数的赋值
答案 0 :(得分:1)
在下面的代码中,我没有为条件变量分配任何新值。 我们只是在这里从条件本身返回值。
我认为这就是您想要的。
def using_control_once():
condition = not 2 >= 3
if condition:
return condition
print(using_control_once())
答案 1 :(得分:0)
在python中的条件语句中,例如:
if <condition>:
<statement>
<condition>
获取evaluated in a boolean context,但未保存在变量中。您在这里有两种选择:
1)如果只需要打印条件的“真值”:
print(<condition>)
由Devesh Kumar Singh建议,或者出于安全考虑:
print(str(<condition>))
2)如果需要if语句:
if <condition>:
print("True")
<other statement>
else:
print("False")
<other statement>
我希望能有所帮助。我还建议您阅读Conditional Statements in Python
上的这篇文章答案 2 :(得分:-1)
如果要跟踪评估条件的时间和方式,可以执行以下操作:
from inspect import getouterframes, currentframe, getsourcelines
import re
def test(exp):
frame_info = getouterframes(currentframe(), 2)[1]
result = re.search(f'{test.__name__}[ ]*\(([^\)]+)\)', frame_info.code_context[1], re.DOTALL)
condition = '{} is {}'.format(result.group(1), bool(exp))
print(condition)
return bool(exp)
def using_control_once(x):
if test(x < 10):
return "Success #1"
if test(x < 20):
return "Success #2"
if test(x < 30):
return "Success #3"
print("x=3")
result = using_control_once(3)
print(f"result is: {result}")
print("\nx=13")
result = using_control_once(13)
print(f"result is: {result}")
print("\nx=23")
result = using_control_once(23)
print(f"result is: {result}")
输出将是:
x=3
x < 10 is True
result is: Success #1
x=13
x < 10 is False
x < 20 is True
result is: Success #2
x=23
x < 10 is False
x < 20 is False
x < 30 is True
result is: Success #3
答案 3 :(得分:-1)
非常感谢你们,感谢Victor的勤奋工作,我还是python和程序设计的新手。这需要一些时间才能理解,但很高兴它可行。
def test(exp):
frame_info = getouterframes(currentframe(), 2)[1]
result = re.search(f'{test.__name__}[ ]*\(([^\)]+)\)',
frame_info.code_context[1], re.DOTALL)
condition = '{} is {}'.format(result.group(1), bool(exp))
print(condition)
return bool(exp)