美文网首页python笔记
HeadFirst Python记事本

HeadFirst Python记事本

作者: GarveyLian | 来源:发表于2017-08-07 13:18 被阅读22次

    第一章笔记

    "BIF"内置函数
    "组(suit)"Python代码块,会通过缩进来指示分组
    "功能齐全(Batteries included)"这是指Python提供了快速高效地完成工作所需的大多数功能

    • 从命令行或者IDLE中运行Python3
    • 标识符是指数据对象的名字。标识符没有“类型”,不过标识符所指示的数据对象有类型
    • print() BIF会在屏幕上显示一个消息
    • 列表是一个数据集合,数据项之间用逗号分隔,整个列表用中括号包围
    • 列表就像打了“激素”的数组
    • 可以用BIF处理列表,另外列表还支持一组列表方法
    • 列表可以存放任意数据,而且数据可以是混合类型,列表还可以包含其他列表
    • 列表可以随意伸缩,数据使用的所有内存都由Python为你管理
    • Python使用缩进将语句归组在一起
    • len() BIF会提供某个数据对象的长度,或者统计一个集合中的项数,如列表中的项数
    • for循环允许迭代处理一个列表,这通常比使用一个等价的while循环更方便
    • 可以利用if...else...语句在代码中完成判定
    • isinstance() BIF会检查一个标识符是否指示某个指定类型的数据对象
    • 使用def来定义一个定制函数

    第二章笔记

    发布到PyPi

    1. 首先新建一个文件夹保存模块
    2. 在新文件夹中创建一个名为“setup.py”的文件,setup文件包含发布的元数据
    from distutils.core import setup
    
    setup(
          name='nester_lian',
          version='1.0.0',
          py_modules=['nester_lian'],
          author='******',
          author_email='********@163.com',
          url='http://*******.com',
          description='A simple printer of nested lists',
          )
    
    1. 构建一个发布文件,在windows系统下,打开管理员命令行进入新建的文件夹目录下,键入命令:D:\Python35\python.exe setup.py sdist
    2. 将发布安装到Python 本地副本中,同样在上一步中的命令行窗口中键入:D:\Python35\python.exe setup.py install
    3. 使用模块的时候记得命名空间的关系,看如何导入的,决定如何使用模块中的方法或变量
    4. 上传到Pypi网站,与大家共享代码,首先注册一个账号,然后在本地命令行窗口中再次确认注册的账号,每台电脑安装python后主需要注册本地注册账号一次,使用命令:D:\Python35\python.exe setup.py register
    5. 注册后即可上传,同样在命令行键入:D:\Python35\python.exe setup.py upload
    6. Python会在一组特定位置寻找模块,查看搜索位置的方式,在控制台键入:
    import sys;
    sys.path
    

    使用三重引号字符串可以在代码中加入一个多行注释
    Python内存中的名字就存放在“命名空间中”
    Python的主命名空间名为__main__

    • 模块是一个包含Python代码的文本文件
    • 发布工具允许将模块转化为可共享的包
    • setup.py程序提供了模块的元数据,用来构建、安装和上传打包的发布
    • 使用import语句可以将模块导入到其他程序中
    • Python的各个模块提供了自己的各个命名空间,使用module.function()形式调用模块的函数时,要用命名空间名限定函数
    • 使用import语句的from module import function形式可以从一个模块将函数专门导入到当前的命名空间
    • 使用#可以注释掉一行代码,或者为程序增加一个简短的单行注释
    • 内置函数(built-in functions,BIF)有自己的命名空间,名为__builtins__,这会自动包含在每一个Python程序中
    • range()BIF可以与for结合使用,从而迭代固定次数
    • 包含end=''作为print() BIF的一个参数会关闭其默认行为(即在输入中自动包含换行)
    • 如果函数参数提供一个缺省值,这个函数参数就是可选的

    第三章笔记

    文件处理方法,文件打开,文件关闭

     #打开文件,赋值给一个文件对象,代表着打开的文件
    try:
      the_file=open('file.txt')
      #文件处理代码
      #文件处理代码
    except ***Error:
      print("*****")
    finally:
      the_file.close()
    

    “异常”(exception)因运行时错误而出现,会产生一个traceback
    "traceback"是出现的运行时错误的一个详细描述

    • 使用open() BIF打开一个磁盘文件,创建一个迭代器从文件读取数据,一次读取一个数据行
    • readline()方法从一个打开的文件读取一行数据
    • seek()方法可以用来将文件“退回”到起始位置
    • close()方法关闭一个之前打开的文件
    • split()方法可以将之前的一个字符串分解为一个子串列表
    • Python中不可改变的常量列表称为元组(tuple)。一旦将列表数据赋至一个元祖列表,就不能再改变。元祖是不可改变的
    • 数据不符合期望的格式时会出现ValueError
    • 数据无法正常访问时会出现IOError(例如,可能你的文件被移走或者重命名)
    • help()BIF允许你在IDLE shell中访问Python的文档
    • find()方法会在一个字符串中查找一个特定子串
    • not关键字将一个调节取反
    • try/except语句提供了一个异常处理机制,从而保护可能导致运行时错误的某些代码行
    • pass语句就是Python的空语句或null语句,它什么也不做

    第四章笔记

    文件的读写,open()方法可以有多个模式,默认是r模式即读模式,如果要写文件,可以用参数提供"w",如果这个文件存在,则会清空它现有的内容,也就是完全清除然后再写入,如果需要追加到一个文件需要使用访问模式a。如果要打开一个进行读写,不清除则使用w+模式。

    try:
        data=open('its.txt',"w")
        data2=open('data2.txt',"w")
        print("It's ...",file=data)
    except IOError as err:
        print('File error: '+str(err))
    finally:
            if 'data' in locals():
                    data.close()
    

    等同于使用with代码

    try:
        with open('its.txt',"w") as data,open("data2.txt","w") as data2:
            print("It's ...",file=data)
    except IOError as err:
        print('File error: '+str(err))
    

    Python术语
    “不可变类型”——Python中的一些数据类型一旦赋值,这个值就不能再改变
    “腌制”——将数据对象保存到一个持久存储中的过程
    “解除腌制”——从持久存储中恢复一个已保存的数据对象的过程

    • strip()方法可以从字符串中去除不想要的空白符
    • print() BIF的file参数控制将数据发送/保存到哪里
    • finally组总会执行,而不管try/except语句中出现什么异常
    • 会向ecxept组传入一个异常对象,并使用as关键字赋至一个标识符
    • str()BIF可以用来访问任何数据对象(支持串转换)的串表示
    • in操作符用于检查成员关系
    • "+"操作符用于字符串时将连接两个字符串,用于数字时则会将两个数相加
    • with语句会自动处理所有已打开文件的关闭工作,即使出现异常也不例外。with语句也使用as关键字
    • sys.stdout是Python中所谓的“标准输出”,可以从标准库的sys模块访问
    • 标准库的pickle模块允许你容易而高效地从将Python数据对象保存到磁盘以及从磁盘恢复
    • pickle.dump()函数将数据保存到磁盘
    • pickle.load()函数从磁盘恢复数据

    第五章笔记

    列表排序

    • 原地排序,排序后替换掉原本的列表:list.sort()
    • 复制排序,复制一个副本后排序,保留了原来的列表:list.sorted()

    一般一个列表转化为另外一个列表需要干哪几个步骤?

    1. 创建一个新列表来存放转换后的列表
    2. 迭代处理原列表中的数据
    3. 每次迭代时完成转换
    4. 将转换后的数据追加到新列表
    clean_mikey=[]
    for each_t in mikey:
      clean_mikey.append(sanitize(each_t))
    

    如果用列表推导的话只需要一行代码,不需要自己添加append()代码:

    clean_mikey=[sanitize(each_t) for each_t in mikey]
    

    Python中还有一个数据结构(列表list,元组tuple不能改变长度与值,集合set)set集合数据结构,集合数据不允许重复,没有排序要求。
    set()BIF创建一个空集合,三种创建集合的方式:

    • distances=set() 创建一个空结合
    • distances={10.6,5.4,4.5}
    • distances=set(list) 列表中所有重复项都被忽略掉

    “原地”排序——转换然后替换
    “复制排序”——转换然后返回
    “方法串链”——从左向右读,对数据应用一组方法
    “函数串链”——从右向左读,对数据应用一组函数
    “列表推导”——在一行上指定转换(而不是使用迭代)
    “分片”——从一个列表访问多个列表项
    “集合”——一组无序的数据项,其中不包含重复项

    • sort()方法可以在原地改变列表的排序
    • sorted()BIF通过提供复制排序可以几乎对任何数据结构排序
    • 向sort()或sorted()传入reverse=True可以按降序排列数据
    • 如果有以下代码
    new_l=[]
    for t in old_l:
      new_l.append(len(t))
    

    使用列表推导重写这个代码,可以写作:

    new_l=[len(t) for t in old_l]
    
    • 要访问一个列表中的多个数据项可以用分片。例如:my_list[3:6]这会访问列表中索引位置3到(不包括)索引位置6的列表项
    • 使用set()集合工厂方法可以创建一个集合

    第六章笔记

    pop()方法,会将列表指定位置的数据项删除,并返回对应的数据项
    Python中的字典,是一个含有映射关系的数据结构,能够保存数据项的结构关系,创建方式可以有:

    dict_data={} #直接用大括号包围实现直接创建
    dict_data=dict() #利用dict()方法创建
    

    Python使用class创建对象,每个定义的类都有一个特殊的方法,名为__init__(),可以通过这个方法控制如何初始化对象,类中的方法与函数的定义类似,也就是说同样使用def来定义,基本形式如下:

    class Athlete:
      def __init__(self):
        #The code to initialize a "Athlete" object.
        ...
    

    创建对象实例,不用new关键字,只需要将对类名的调用赋至各个变量

    a=Athltet()
    b=Athltet()
    c=Athltet()
    

    Python类中self参数很重要,因为python类的设计中,方法共享,属性不共享,因此每个方法都需要self参数,将目标标识符传进去处理。
    创建对象的流程,调用类的定制工厂函数Athlete(),然后python处理这行代码时,它把工厂函数转换为Athlete().__init__(a)调用,这样就将目标标识符传进去了,所以函数方法中self参数很重要。

    “字典”——这是一个内置的数据结构,允许将数据值与键关联
    “键”——字典中查找的部分
    “值”——字典中的数据部分(可以是任何值,也可以包括另一种数据结构)
    “self”——这是一个方法参数,总是指向当前对象实例

    • 使用dict()工厂函数或使用{}可以创建一个空字典
    • 要访问一个名为person的字典中与键Name关联的值,可以使用我们熟悉的中括号记法,person['Name']
    • 类似列表与集合,Python的字典会随新数据增加到这个数据结构中而动态扩大
    • 可以先创建一个空字典:new_d=dict{}或new_d={}然后增加数据d['Name']='Eric Idle'来填充字典,或者也可一次完成以上的全部工作:new_d={'Name':'Eric Idle'}
    • 可以用class关键字定义一个类
    • 类方法(代码)与函数的定义基本相同,也就是说,要用def关键字定义
    • 类属性(数据)就像对象实例中的变量
    • 可以在类中定义__init__()方法来初始化对象实例
    • 类中定义的每个方法都必须提供self作为第一个参数
    • 类中每个属性前面都必须提供self作为第一个参数,从而将数据与其实例关联
    • 类可以从零开始构建也可以从Python的内置类或从其他定制类继承
    • 类可以放到一个Python模块中,并上传到Pypi

    相关文章

      网友评论

        本文标题:HeadFirst Python记事本

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