用字典代替switch case语句
#用字典代替switch case语句
day=0
def get_Monday():
# 函数里还可以写一些业务逻辑
return 'Monday'
def get_Tuesday():
return 'Tuesday'
def get_Wednesday():
return 'Wednesday'
def get_default():
return 'unknow'
switcher={
0:get_Monday, # value 可以为函数 也可以为具体的值 字符串等
1:get_Tuesday,
2:get_Wednesday
}
# get(需要获取的value的key,default的返回值)方法来模拟switch case 中default的情况
r=switcher.get(day,get_default)()
print(r)
列表推导式
# 列表推导式 可以代替map
a=[1,2,3,4,5]
# 有条件的推导 推荐使用列表推导式代替map 求立方
b=[i**3 for i in a if i>2]
# [27, 64, 125]
print(b)
#set 集合也可以被推导
c={1,2,3}
d={j**3 for j in c}
# {8, 1, 27}
print(d)
# 字典也可以列表推导式
student={
'萧炎':22,
'萧薰儿':18,
'小药仙':20
}
# 获取字典key值 ['萧炎', '萧薰儿', '小药仙']
b=[key for key,value in student.items()]
print(b)
# 颠倒字典key value {22: '萧炎', 18: '萧薰儿', 20: '小药仙'}
c={value:key for key,value in student.items()}
print(c)
#不推荐使用元组的形式 会返回可遍历的generator <generator object <genexpr> at 0x0000000001DF92A0>
d=(key for key,value in student.items())
print(d)
#遍历的generator
for i in d:
print(i) #萧炎 萧薰儿 小药仙
None 空:
不等同于空字符、空列表、0、False
#None也是一个对象 表示不存在
#<class 'NoneType'>
print(type(None))
# False、''、[]、None返回False
判空操作 if a if not a
* 对象存在并不一定返回True
# 对象存在并不一定返回True
class Test():
def __bool__(self):
# 只能返回bool值
return False
def __len__(self):
# 可返回int 和bool值
return 2
# len()调用的是内置方法 __len__
print( len(Test())) #2
'''
1.有__bool__()方法时 bool(Test())执行的是内置__bool__()
2.无__bool__()方法且有__len__()方法时, bool(Test())执行的是内置__len__()
3.无__bool__()方法且无__len__()方法时,bool(Test())返回True
'''
print( bool(Test()) ) #False