目录
三、else with loop - 循环执行完后执行else
github wtfpython - 举例python内特别的功能特性
一、and,or
- 在不加括号时候, and优先级大于or
- x or y 的值只可能是x或y. x为真就是x, x为假就是y
- x and y 的值只可能是x或y. x为真就是y, x为假就是x
# res = a or b ,当 a ≠ 0 即 res = a print(1 or 5) # 1 # res = a or b ,当 a = 0 即 res = b print(0 or 5) # 5 # res = a and b ,当 a ≠ 0 即 res = b print(1 and 5) # 5 # res = a and b ,当 a = 0 即 res = a print(0 and 5) # 0
二、三目运算符的四种写法
b = 2 a = 1 if b > 1 else 0 # 正常人版本 # 1 a = b > 1 and 1 or 0 # 使用了短路逻辑,不推荐,因为当涉及布尔值时会出错 # 1 a = (1, 0)[b < 1] # 完全不推荐, 不是元组下标的正确用法 # 1 b = False # 短路逻辑出错例子 a = b > 1 and 1 or 0 # 0
三、else with loop - 循环执行完后执行else
for x in range(1,10): pass else: print("final")
四、list 倒叙遍历 - 先倒叙,再遍历
a = range(0,10) for x in a[: : -1]: print(x,end=' ') >>> 9 8 7 6 5 4 3 2 1 0
五、dict 生成字典
# dict constructor para = dict( a=1, b=2 ) # dict literal para = { "a" : 1, "b" : 2 }
5-1 dict() vs {}
- 对于空字典和填充字典操作,{} 速率都高于 dict() 的执行效率,2-3倍
- dict 接受迭代器
六、try 中的 return
- 当在 "try...finally" 语句的
try
中执行return
,break
或continue
后,finally
子句依然会执行.- 函数的返回值由最后执行的
return
语句决定. 由于finally
子句一定会执行, 所以finally
子句中的return
将始终是最后执行的语句.def some_func(): try: return 'from_try' finally: return 'from_finally' res = some_func() # from_finally
七、enumerate 活用
7-1 遍历列表生成字典
some_list = ['a', 'b', 'c', 'd'] some_dict = {} for i, some_dict[i] in enumerate(some_list): pass print(some_dict) # {0: 'a', 1: 'b', 2: 'c', 3: 'd'} # 简化版本 some_dict = {i: k for i, k in enumerate(some_list)} # {0: 'a', 1: 'b', 2: 'c', 3: 'd'}