Python - 在if语句中使用string作为条件

use*_*418 4 python string if-statement conditional-statements

我想这样做:

a = "1 or 0"
if (a): Print "true"
Run Code Online (Sandbox Code Playgroud)

所以我可以使用字符串作为if语句的条件.这可能吗?

Ble*_*der 10

这是可能的,但不要这样做:

a = '1 or 0'

if eval(a):
    print 'a is True'
Run Code Online (Sandbox Code Playgroud)

eval()很难调试,这里没有任何好处,如果允许任意用户输入(例如a = "__import__('os').system('rm -Rf /')"),很容易被利用.

  • [必要链接](http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html) (2认同)

Ami*_*dav 1

字符串总是True用于if语句if it is not empty,因此在语句中使用它是没有用的if

In [12]: my_str = 'a=a'

In [13]: if my_str:
   ....:     print True
   ....: else:
   ....:     print False
   ....:     
True

In [14]: new_str = ''

In [15]: if new_str:
   ....:     print True
   ....: else:
   ....:     print False
   ....:     
False

In [16]: 
Run Code Online (Sandbox Code Playgroud)

因此,尝试传递一些计算为布尔值的真实条件。