读《像计算机科学家一样思考python》——笔记(2/2)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读《像计算机科学家一样思考python》——笔记(2/2)相关的知识,希望对你有一定的参考价值。

包括如下目录:

  • 第十四章 文件
  • 第十五章 类和对象
  • 第十六章 类和函数
  • 第十七章 类和方法
  • 第18章 继承

 

 

第十四章 文件

1. 读和写

一个文件需要先打开,然后再进行读与写, 最后把打开的文件关闭。

#读文件
>>> f = open(words.txt)
>>> print f
<open file words.txt, mode r at 0x7fd74378e4b0>
>>> f.readline()
aa\r\n
>>> f.close()
# 写文件
>>> f = open(sb.txt, w)
>>> print f
<open file sb.txt, mode w at 0x7fd74378e540>
>>> line = "hello, world!\n"
>>> f.write(line)
>>> f.close()
>>> exit()

注意:要写入一个文件,需要使用 ‘w’模式作为第二个实参开打开它。如果文件已经存在,则使用写模式打开时会清除掉旧的数据并重新形如,所以特别注意啊。如果文件不存在,则新建一个。另外, write的参数是必须是字符串。

2,格式操作符

它与c语言中printf()里面的格式化字符串类似的,可以格式化输出。 %d 用于格式化整数, %g 用于格式化小数,%s 用于格式化字符串。

当字符串中有一个格式序列时,

>>> print I have %d pens % 12
I have 12 pens

当字符串中有多个字符序列时, 第十个操作对象就必须是元组。 并且每个格式序列按对应元组中的一个元素。

>>> print In %d years I have spotted %g %s. % (3, 0.1, camels)
In 3 years I have spotted 0.1 camels.

3. 文件名与路径

os模块提供了用于操作文件和目录的函数, 具体可以查看一下这个模块的相关函数。

4. 捕获异常

可以使用 try语句来捕获一个异常,例子如下:

try:
        fin = open(1123.d)
        print 打开成功
        fin.close()
except:
        print 没有打开成功,可能文件不存在\n

5. 数据库: 模块anydbm 提供了接口用于创建和更新数据库的文件。 anydbm模块的限制之一是键和值都是字符串,即它只能保存字符串。  pickle模块可以把几乎所有类型的对象转换为适合保存到数据库的字符串形式, 并可以将字符串转换成为对象。 python将上面这两个模块封装起来成为了一个模块,叫做 shelve.

6. 管道  ( os.popen()现在已经废止了,但是还没有完全废止)

任何在字符界面能启动的程序都可以在python 中通过一个管道来启动。 它的返回值和一个打开的文件差不多。

>>> cmd = ls -l
>>> fp = os.popen(cmd)
>>> print fp.read()
总用量 1156
drwxrwxr-x 3 yinheyi yinheyi    4096 Sep 20 17:34 2048
-rwxrwxr-x 1 yinheyi yinheyi    8519 Oct 27 20:29 a.out
-rw-rw-r-- 1 yinheyi yinheyi      95 Oct 27 20:29 hello.c
-rw-rw-r-- 1 yinheyi yinheyi      75 Oct 31 14:26 hello.py
-rw-rw-r-- 1 yinheyi yinheyi     140 Oct 31 22:10 main.c
-rw-rw-r-- 1 yinheyi yinheyi     218 Oct 31 22:11 Makefile
-rw-rw-r-- 1 yinheyi yinheyi      14 Nov  1 09:52 sb.txt
-rw-rw-r-- 1 yinheyi yinheyi     214 Nov  1 10:17 sum.py
drwxrwxr-x 4 yinheyi yinheyi    4096 Sep 20 17:18 Tinyhttpd
-rw-rw-r-- 1 yinheyi yinheyi     423 Oct 31 20:13 turtle.py
-rw-rw-r-- 1 yinheyi yinheyi 1130523 Oct 31 16:43 words.txt

>>> print fp.close()

7. 编写模块:

我们可以把任何包含 pyhon 的代码的文件都可以作为模块导入。 里面定义了函数的话, 我们就可以调用它。

说明一点:为了模块内的部分没有必要的代码被执行, 通常把这部分代码写入到如下模式中去:

if __name__ == __main__:
    print hello, world!
    ……

__name__ 是一个内置变量,当程序启动时就会被设置, 程序作为脚本执行, __name__ 的值就是 __main__ ,此时, 下面代码会被执行。当作为模块被导入时, 这部分代码就会被跳过。

 

第十五章 类和对象

这本书上,这一节讲的实在太简单表面了,,没有什么可以作为笔记的;

 

第十六章 类和函数

1. 什么是纯函数?一个函数它坠子返回一个值之外, 并不修改作为实参传入的任何对象, 也没有任何如显示值或获得用户输入之类的副作用。

2. 什么是修改器? 有时候用函数修改传入的参数对象是很有用的。在这种情况下, 修改对调用者是可见的, 这样工作的函数称为修改器。

 

第十七章 类和方法

1. 对于写在类内部的函数,我们把它称为方法。

当我们调用一个方法时,直接使用主体与方法名称就可以了,比如(xiaoming 是一个主体,而h1为一个方法名称):

class hello(object):
    def h1():
        print hello, world!
xiaoming = hello()
xiaoming.h1()

在方法中, 主体会被赋值到第一个形参上。 依惯来, 方法的互一个形参通常叫做 self。

2. 类的 init 方法

init 方法是一个特殊的方法,当对象初始化时会被调用。它的全名是 __init__。比如:

def __init__(self, hour = 0, minute = 0, second = 0):
    self.hour = hour
    self.minute = minute
    self.second = second

2. 类的 __str__方法

__init__也是一个特殊方法, 它用来返回对象的字符串的表达形式。当我们打印对象的结果时, python 会调用__str__方法。定义例如:

def __str__(self):
    return %d %d %d % (self.hour, self.minute, self.second)

3. 操作符重载

通过定义其它特殊方法, 我们可以为用户定义类型的各种操作符指定的行为, 比如:当我们定义一个名为 __add__ 方法时, 则可以在时间对象上使用 + 操作符。  其它的操作符都有相应的特殊名字的方法。

4. 多态问题

书中没有详细说明,等着再参考其它的学习资料吧。

 

第18章 继承

以上是关于读《像计算机科学家一样思考python》——笔记(2/2)的主要内容,如果未能解决你的问题,请参考以下文章

《像计算机科学家一样思考Python》pdf

像计算机科学家一样思考Python (第2版)pdf

像计算机科学家一样思考python笔记

像计算机科学家一样思考Python (第2版)高清PDF电子版下载

编程学习之-用python3的方式思考

编程学习之-用python3的方式思考