• 高效的python学习笔记


    第一章:用Pythonic方式来编写代码

    第三条:了解bytes,str与unicode的区别

    Python3有两种表示字符序列的类型:bytes和str.前者的实例包含原始的8位值;后者的实例包含Unicode字符.
    Python2也有两种表示字符序列的类型,分别叫做str和unicode.与Python3不同的是,str的实例包含原始的8位值;而unicode的实例,则包含Unicode字符.
    把unicode字符表示为二进制数据(即原始8位值)有很多办法.
    要点:
    ①在Python3中,bytes是一种包含8位值的序列,str'是一种包含Unicode字符的序列.不能以>或+等操作符来混同操作bytes和str实例.
    ②在Python2中,str是一种包含8位值的序列,unicode是一种包含Unicode字符的序列.如果str只含有7位ASCII字符,那么可以通过相关操作符来同时使用str和unicode。
    ③从文件中读取/写入二进制文件时,总应该以'rb'或'wb'等二进制模式来开启文件。

    第四条:用辅助函数来取代复杂的表达式

    第五条:用列表推导式来取代map和filter

    第六条:不要使用含有两个以上表达式的列表推导式

    第七条:用生成器表达式来改写数据量较大的列表推导式

    第八条:尽量用enumerate代替range

    第九条:用zip函数同时遍历两个迭代器

    第十条:不要在for和while循环后面写else块

    第十一条:合理利用try/except/else/finally结构中的每个代码块

    第二章:函数

    第十四条:尽量用异常来表示特殊情况,而不要返回None

    要点:
    ①用None这个返回值来表示特殊意义的函数,很容易使调用者犯错,因为None和0及空字符串之类的值,在条件表达式里都会评估为False;
    ②函数在遇到特殊情况时,应该抛出异常,而不要返回None

    第十五条:了解如何在闭包里使用外围作用域中的变量

    要点:
    ①对于定义在某作用域内的闭包来说,它可以引用这些作用域中的变量;
    ②使用默认方式对闭包内的变量赋值,不会影响外围作用域中的同名变量;
    ③在Python3中,程序可以在闭包内用nonlocal语句来装饰某个名称,使该闭包能够修改外围作用域中的同名变量;
    ④在Python2中,程序可以使用可变值(例如,包含单个元素的列表)来实现与nonlocal语句相仿的机制;
    ⑤除了那种比较简单的函数,尽量不要用nonlocal语句
    def sort_priority(values,group):
        pass
    Python支持闭包(closure):闭包是一种定义在某个作用域中的函数,这种函数引用了那个作用域中的变量;
    Python的函数是一级对象(first-class object):也就是说,我们可以直接引用函数、把函数赋值给变量、把函数当参数传给其他函数,并通过表达式及if语句对其进行比较和判断;
    Python使用特殊的规则来比较两个元组。它首先比较各元组中下标为0的对应元素,如果相等,再比较下标为1的对应元素,如果还是相等,那就继续比较下标为2的对应元素,以此类推。

    第十六条:考虑用生成器来改写直接返回列表的函数

    要点:
    ①使用生成器比把收集到的结果放入列表里返回给调用者更加清晰;
    ②由生成器函数所返回的那个迭代器,可以把生成器函数体中,传给yield表达式的那些值,逐次产生出来;
    ③无论输入结果有多大,生成器都能产生一系列输出,因为这些输输入量和输出量,都不会影响它在执行时所消耗的内存。

    第十七条:在参数上面迭代时,要多加小心

    要点:
    ①函数在输入的参数上面多次迭代时要小心:如果参数是迭代器,那么可能会导致奇怪的行为并错失某些值;
    ②Python的迭代器协议,描述了容器和迭代器应该如何与iter和next内置函数、for循环及相关表达式相互配合;
    ③把__iter__方法实现为生成器,即可定义自己的容器类型;
    ④想判断某个值是迭代器还是容器,可以拿该值作为参数,两次调用iter函数,若结果相同,则是迭代器,调用内置的next函数,即可令该迭代器前进一步。

    第十四条:考虑用生成器来改写直接返回列表的函数

    做一枚奔跑的老少年!
  • 相关阅读:
    【总】IdentityServer4 32篇汇总
    ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释
    ASP.NET Core身份认证服务框架IdentityServer4(2)-整体介绍
    dentityServer4(1)- 特性一览
    Identity和IdentityServer的区别及联系
    if (user?.Identity?.IsAuthenticated ?? false)这几个问号分别都代表啥意思?
    ASP.NET Core 认证与授权[1]:初识认证
    如何优化Python占用的内存,面试必学
    Python3的这些新特性很方便,新手必学
    Python常见面试题,80%的人不会
  • 原文地址:https://www.cnblogs.com/xiaoshayu520ly/p/11938499.html
Copyright © 2020-2023  润新知