《Python学习手册》学习总结

本文是作者对《Python学习手册》的详细学习总结,涵盖从如何运行程序到面向对象编程的全面内容。文章介绍了Python的运行机制、对象类型、数字和字符串操作、列表和元组、文件处理、异常处理等多个核心概念,深入探讨了Python的语法、函数、类和模块的使用,为读者提供了一条系统学习Python的路径。
摘要由CSDN通过智能技术生成

本篇文章是作者关于在学习了《 Python学习手册 》以后,分享的学习心得,在此之前,我们先给大家分享一下这本书:

下载地址: Python学习手册第4版

之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读《Python学习手册》。
在前两章节都是对基本的信息做了概述,我们从第三章开始。

第三章 如何运行程序

import进行模块导入只能运行一次,多次运行需使用reload。

模块往往是变量名的封装,被认为是命名空间。例如:


    #myfile.py
    title = "test"
    
    >>>import myfile
    >>>print myfile.title
    test 

替代方案是from,下面有同样的效果:


    >>>from myfile import title
    >>>print tittle
    test

from myfile import * 则可以把myfile所有变量全部导入(第19章内容)。

第四章 介绍Python对象类型

虽然字符串支持多种操作,但是它具有不可变性,即原字符串不能改变,只能用新字符串作为结果赋予一个变量。下面是一个试图改变原字符串的操作及报错信息:


    >>> s="spam"
    >>> s[0] = 'z'
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    TypeError: 'str' object does not support item assignment

第五章 数字

str和repr显示格式


    >>>num = 1/3.0
    >>>num
    0.33333333333333331
    >>>print num
    333333333333
    
    >>>repr(num)
    '0.33333333333333331' #交互模式回显
    >>>str(num)
    '333333333333' #打印语句

浮点数运算在精确方面有缺陷。这和硬件有关,打印结果也不能完全解决。


    >>> 0.1+0.1+0.1-0.3
    5.551115123125783e-17
    >>> print 0.1+0.1+0.1-0.3
    5.55111512313e-17 

使用小数对象可以进行修正


    >>> from decimal import Decimal
    >>> Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')
    Decimal('0.0') 

第六章 动态类型简介

a =
3这个语句实际上执行了三个步骤:创建一个对象代表值3;如果还未创建,创建一个变量a;将变量与新的对象3连接。这时,变量a成为了对象3的一个引用,也可以看做是指针。

类型属于对象,而不是变量,这就很好理解为什么Python中同一个变量名可以作为不同类型的对象的引用了。

在这种机制下,每个对象都有一个引用计数器,当计数器为0时就被系统回收,这便是Python中对象的垃圾收集的方法了。

不同变量引用同一个数字或字符串时,对变量操作(eg.a=3
a=a+2)只是创建了一个新的对象并使它引用新对象,这也是上一章提到的字符串不能改动的原因。而对于一些类型来说,有的操作确实能改变对象,如下所示:


    #situation 1
    >>>L1=[2,3,4]
    >>>L2=L1
    >>>L1=24
    >>>L2
    [2,3,4]
    #situation 2
    >>L1=[2,3,4]
    >>>L2=L1
    >>>L2[0]=24
    >>>L1
    [24,3,4]

为了让两个变量使用不同的对象,可以拷贝对象,使用L2=L1[:]来代替L2=L1即可。对于字典则使用D.copy()方法。标准库的copy模块提供了一个对任意对象的调用方法,下面两种方式的区别暂不讨论:


    import copy
    X = copy.copy(Y) #表层拷贝
    X = copy.deepcopy(Y) #深拷贝

这里就出现了个问题,两个引用是否是同一对象?可以用下面的方式判断:


    >>>L=[1,2,3]
    >>>M=L
    >>>L== M
    True
    >>>L is M
    True

负值索引相当于从末尾倒数。-1就是最后一个元素的索引。对于s=“spam”,-5是个非法的索引值。分号:前的空值表示从第一个开始,后的空值表示直到最后一个。

第七章 字符串

单双引号是一样的,这样允许用户不使用转移字符来实现带有单或双引号的字符串。个人认为避免了按shift才能使用双引号“的麻烦。


    >>>'knight"s ',"knight's"
    ('knight"s ',"knight's")

此外,合并相邻的字符串常量,如’knight"s ’ “knight’s”(中间有空格)会显示为’knight"s
knight’s’。可见,最外层是单引号,为了保持原内容,Python把单引号里的单引号改写成了转义字符,这个例子和书上的不同,更有助于理解。转义字符和C很类似,多了几种;但是Python里没有空字符串,Python为每个字符串保存了内容和长度。同时,如果一个字符串中没有合法的转义编码出现在"“后,那么它将在字符串中保留反斜线。抑制转义的方法是在字符串前加r,如r"C:\new\text.dat”,此时的\n和\t就不会被当做是转义字符,同时,这样做也不必把\改写成\。

三重引号适用于多行的字符串的直接输入而不使用转义字符。利用三重引号也可以实现类似C中/* */注释掉代码的目的。

Unicode字符串通过在前面加u获得。

扩展分片是第三个索引,用作步进。这时完整的分片形式为X[I:J:K],其中步进为K。当步进取-1时,可以把字符串反转,很神奇的方法。

利用分片,可以对字符串进行修改,即把新字符串加到原字符串上,再把原字符串切掉。

字符串格式化的用法与C的printf很像,不同之处在于所有参数外需要加一个(),形成%(arg1,arg2,arg3)的形式。格式化代码请参考原书表格,通用结构:%[(name)][flags][width][.precision]code,其中name可以是字典名,这时在参数表里提供这个字典的键即可。

既然字符串是对象,那么它就有对应的方法。书上介绍了修改字符串的replace()、查找find()、把每个元素取出创建列表的list()、把列表合并成字符串的join()(可以作为list()的反操作)、提取组件的split()。

第八章 列表

用中括号表示列表,列表的组成对象是有序的,组成列表的各个对象允许不同。

用大括号表示字典,字典的组成对象是无序的,字典键的搜索方式是哈希搜索,速度很快。

可以用字典来模拟列表:使用序数作为字典的索引即可。类似地,字典可以用来表示一些稀疏矩阵。

字典的get方法用于避免不存在的键,如果键不存在,返回值是0。

字典接口是使用方式类似字典并且实际工作都和字典一样的一些Python扩展程序的接口。

第9章 元组、文件及其他

用小括号表示元组,元组不能原处修改。

为了避免只含一个元素的元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值