python写if语句_写好Python之If语句

避免将分支代码放在冒后后相同行

使用缩进来区分作用域(和你在Python其他地方一样)更容易判断条件所要执行的部分。if, elif, 和else里语句应该总是在新行。不应该将代码跟在:后。

糟糕的

name = 'Aidan'

address = 'GuangDong, ShenZhen'

if name: print(name)

print(address

推荐的

name = 'Aidan'

address = 'GuangDong, ShenZhen'

if name:

print(name)

print(address

避免在If语言中重复出现变量

当你想检查变量是否为一系列值时,重复检查该值是不必的冗长。使用iterable(迭代)让代码更简单,并具有可读性

糟糕的

is_generic_name = False

name = 'Tom'

if name == 'Tom' or name == 'Dick' or name == 'Harry':

is_generic_name = True

推荐的

name = 'Tom'

is_generic_name = name in ('Tom', 'Dick', 'Harry')

避免直接True, False, 或None进行比较

对于任何对象,内建还是用户定义,都具有相关的布尔特性,当检查一个条件是否为真时,如果不是在语句中严格判断其对象布尔特性,判断规则有点让人奇怪。以下将被视为False:

None

False

数值0

空序列

空字典

对象方法_len或_nonzore返回值为0或者False

除了这些其他都会视为True(或隐示为True)。最后的条件是通过检查对象的len或nonzero,来判断布尔值。

if语句中隐示使用布尔值,你应该不使用:

if foo == True:

简单使用 if foo:.

有几个原因。最首要的是当foo变为int类型时,if语句仍然有效。更深层的原因在于equality和indentity。使用==判断两个对象爱嗯是否是相同值(_eq属性)。使用is来判断两个对象是否时相同对象。

在判断中,避免直接与False和None或者空序列(例如:[], {})进行比较。如果my_lists是个空列表,使用if mylist: 将返回False

有时,虽不推荐和None进行直接比较,但有时又时必须的。函数检查某个参数默认值是否None,例如:

def insert_value(value, position=None):

"""INserts a value into my container, optionally at the

specified position"""

if position is not None:

...

这里if position:?做了什么呢,当有人想插入到指定0位置,当函数没有设置position参数,由于0等于False,我们就使用is 或is not来进行None比较, 而不是 ==.

糟糕的

def number_of_evil_robots_attacking():

reutrn 10

def should_raise_shields():

# "We only raise Shields when one or more giant robots attack,

# so I can just return that value..."

return number_of_evil_robots_attacking()

if should_raise_shields() == True:

raise_shields()

print("Shields raised")

else:

print("Safe! No giant orbots attacking")

推荐的

def number_of_evil_robots_attacking():

reutrn 10

def should_raise_shields():

# "We only raise Shields when one or more giant robots attack,

# so I can just return that value..."

return number_of_evil_robots_attacking()

if should_raise_shields():

raise_shields()

print("Shields raised")

else:

print("Safe! No giant orbots attacking")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值