Los*_*oul 49 python if-statement
这是非常基本的,但我编码并开始想知道是否有一种pythonic方法来检查是否存在某些东西.这是我如何做到的,如果它是真的:
var = 1
if var:
print 'it exists'
Run Code Online (Sandbox Code Playgroud)
但是当我检查是否存在某些东西时,我经常这样做:
var = 2
if var:
print 'it exists'
else:
print 'nope it does not'
Run Code Online (Sandbox Code Playgroud)
如果我所关心的只是一种浪费,似乎是一种浪费,如果没有其他东西,有没有办法检查是否存在某些东西?
wim*_*wim 120
LBYL风格,"在你跳跃之前看":
var_exists = 'var' in locals() or 'var' in globals()
Run Code Online (Sandbox Code Playgroud)
EAFP风格,"比允许更容易请求宽恕":
try:
var
except NameError:
var_exists = False
else:
var_exists = True
Run Code Online (Sandbox Code Playgroud)
在Python中编码时首选第二种样式(EAFP),因为它通常更可靠.
Pao*_*ino 24
我认为你必须小心你的术语,无论是否存在某种东西,并且评估为False的东西是两个不同的东西.假设你想要后者,你可以简单地做:
if not var:
print 'var is False'
Run Code Online (Sandbox Code Playgroud)
对于前者,它将不那么优雅:
try:
var
except NameError:
print 'var not defined'
Run Code Online (Sandbox Code Playgroud)
然而,我想要进行一次飞跃和冒险,无论是什么让你想要检查变量是否被定义,都可以以更优雅的方式解决.
if not var:
#Var is None/False/0/
if var:
#Var is other then 'None/False/0'
Run Code Online (Sandbox Code Playgroud)
在 Python 中,如果 varibale 具有 None/False/0 中的任何值,则If var
条件将失败...
对于其他对象,它将调用__nonzero__
pythonic 方法,该方法可能返回True
或 ,False
具体取决于其功能。
要检查是否已定义 var:
var = 2
try:
varz
except NameError:
print("No varz")
Run Code Online (Sandbox Code Playgroud)
检查它是否为 None / False
if varz is None
Run Code Online (Sandbox Code Playgroud)
...或者
if not varz
Run Code Online (Sandbox Code Playgroud)
如果这是一本字典,你可以有
mydict['ggg'] = '' // doesn't matter if it is empty value or not.
if mydict.has_key('ggg'):
print "OH GEESH"
Run Code Online (Sandbox Code Playgroud)
但是,has_key()
从 Python 3.x 中完全删除,因此,Python 的方式是使用in
'ggg' in mydict # this is it!
# True if it exists
# False if it doesn't
Run Code Online (Sandbox Code Playgroud)
您也可以in
用于元组、列表和集合。
当然,如果变量没有被定义,你将不得不默默地抛出一个异常(只要抛出任何异常......让它通过),如果异常不是你想要看到的(这对许多应用程序很有用,你只需要记录异常。)
在使用变量之前定义它总是安全的(你会遇到“在本地引用之前赋值”,这意味着“var 不在范围内”用简单的英语)。如果你用查询做一些事情,你可能想要一个字典,并检查一个键是否存在,使用in
.
归档时间: |
|
查看次数: |
211310 次 |
最近记录: |