python入门与进阶篇(八)之Pythonic与Python杂记

用字典代替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 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值