美文网首页
13.pythonic与python杂记

13.pythonic与python杂记

作者: tomtiddler | 来源:发表于2018-10-01 09:23 被阅读0次

    导言

    产品是打磨出来的

    用字典映射代替switch case 语句

    字典内value可以传入函数!!!,但是需要注意函数是可调用的。

    day = 2
    
    def get_return_wednesday():
        return "wednesday"
    
    switcher = {
        0: "Sunday",
        1: "Monday",
        2: "Tuesday",
        3: get_return_wednesday
    }
    
    
    dayName = switcher.get(day, "Saturday")() \
        if callable(switcher.get(day, "Saturday")) \
        else switcher.get(day, "Saturday")  # 没有day key也不会报错,会返回默认值”Saturday“
    print(dayName)
    

    列表推导式

    通过一个一致的集合、列表生成一个新的集合、列表

    a = [1, 2, 3, 4, 5, 6, 7, 8]
    
    # for循环  以及 map 都可以完成该功能
    print([x**2 for x in a if i >=5])
    

    如果采用推导式,能更灵活地在单语句中添加过滤条件等.map 则需要 filter 组合出该功能

    列表推导式并不是只能推导列表,set也可以被推导,如果采用小括号,则编程生成器,变成惰性的迭代器。

    字典如何编写列表推导式

    翻转字典
    b = {value: key for key, value in students.items}

    None

    1.类型上为空类型 Nonetype
    2.取值上为空

    if not a: 和 if a is None:是有区别的
    因为 a 可能是空的字符串、列表、字典等,此时 not a 为真, a is None 为假。

    判空 直接 if a: 或者 if not a:

    None表示不存在,False表示真假。

    对象存在并不一定是True

    class Test():
        def __len__(self):
            return 0
    
    test = Test()
    
    if test:
        print("S")
    else:
        print("F")
    

    对于自定义的对象,即使存在也可能返回False。
    决定于类的__len____bool__方法

    __len____bool__内置方法

    影响自定义对象的最终bool取值。
    如果两个方法都没定义,类的实例bool值返回True
    如果单个len返回0, bool返回False,返回其他数字,返回False。不能返回非整数的其他类型。能返回bool值。
    判断对象的True or False
    如果加入了__bool__方法,类的实例bool值将由该方法决定。该方法只能返回True 或者 False

    判断对象长度,也会调用对象的__len__内置函数

    逻辑运算符
    Map/Reduce百科:
    https://baike.baidu.com/item/MapReduce/133425?fr=aladdin

    相关文章

      网友评论

          本文标题:13.pythonic与python杂记

          本文链接:https://www.haomeiwen.com/subject/vwmonftx.html