简明python教程的读书笔记(三)

一、面向对象的编程:

  • 面向过程的编程:根据操作数据的函数或语句块来设计程序的。这被称

为。

  • 面向对象的编程:把数据和功能结合起来,用称为对象的东西包裹起来组织程序

的方法。这种方法称为面向对象的 编程理念。

  • 类和对象:是面向对象编程的两个主要方面。类创建一个新类型,而对象这个类的实例 。这类似于你有一个int类型的变量,这存储整数的变量是int类的实例(对象)。
  • 怎么创建类:类使用class关键字创建。类的域和方法被列在一个缩进块中。
  • 类的组成:对象可以使用普通的属于     对象的变量存储数据。属于一个对象或类的变量被称为域。对象也

可以使用属于 类的函数来具有功能。这样的函数被称为类的方法。

  • 域有两种类型——属于每个实例/类的对象或属于类本身。它们分别被称为实例变量和类变

量。

  • self类对象:

类的方法(意思是在类里面定义方法)与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。

这个特别的变量指对象本身,按照惯例它的名称是self。

  • 创建一个类:

#!/usr/bin/python

# Filename:simplestclass.py

class Person:

pass #An empty block表示一个空块

p = Person()

print p

  • 对象的方法:

类/对象可以拥有像函数一样的方法,这些方法与函数的区别只是一个额外的self变量。

#!/usr/bin/python

# Filename:method.py

class Person:

def sayHi(self):

print ‘Hello, howare you?‘

p = Person()

p.sayHi()

  • __init__方法:

__init__方法在类的一个对象被建立时,马上运行。

这个方法可以用来对你的对象做一些你希望的初始化。

#!/usr/bin/envpython

class person:

pass

class myob:

def __init__(self,name):

self.a=1

self.name=name

def abc(self):

print ‘hello,how areyou?‘,self.a,self.name

p=person()

print p

a=myob(‘victor‘)

a.abc()

  • 类的变量和对象的变量:

#!/usr/bin/envpython

class person:

population=0

def __init__(self,name):

self.name=name

person.population+=1

def howMany(self):

print "now there are:",self.population

def sayHello(self):

‘‘‘say hello when add a newperson‘‘‘

if person.population==1:

print ‘i am the onlyperson‘

else:

print ‘hi, i am new, myname is‘,self.name

def __del__(self):

‘‘‘i am dying‘‘‘

print ‘%s saygoodbye‘%self.name

person.population-=1

if person.population==0:

print ‘i am the lastperson‘

else:

print ‘still have %sperson left‘%person.population

p=person(‘david‘)

p.sayHello()

p.howMany()

p1=person(‘davidy‘)

p1.sayHello()

p1.howMany()

docstring对于类和方法同样有用。我们可以在运行时使用Person.

__doc__和Person.sayHi.__doc__来分别访问类与方法的文档字符串。

如果你使用的数据成员名称以双下划线前缀 比如__privatevar,Python的名称

管理体系会有效地把它作为私有变量。如果某个变量只想在类或对象中使用,就应该以单下划线前缀。

  • 继承:

。一个子类型在任何需要父类型的场合可以被替换成父类型,即对象可

以被视作是父类的实例,这种现象被称为多态现象。

我们会发现在重用 父类的代码的时候,我们无需在不同的类中重复它。而如果我们使

用独立的类的话,我们就不得不这么做了。在上述的场合中,SchoolMember类被称为基本类 或 超类 。而Teacher和Student类被称为 子类 。

如果在继承元组中列了一个以上的类,那么它就被称作多重继承。

#!/usr/bin/envpython

class School:

def __init__(self,name,age):

self.name=name

self.age=age

def tell(self):

print ‘my name is‘,self.name

print ‘my age is %s‘%self.age

classTeacher(School):

def __init__(self,name,age,salary):

School.__init__(self,name,age)

self.salary=salary

def tell(self):

print ‘the teacher salay is%s‘%self.salary

School.tell(self)

classStudent(School):

def __init__(self,name,age,mark):

School.__init__(self,name,age)

self.mark=mark

def tell(self):

print ‘the student mark is%s‘%self.mark

School.tell(self)

a=Teacher(‘teacherchen‘,21,20000)

b=Student(‘studentchen‘,22,90)

a.tell()

b.tell()

二、输入、输出

  • 创建、读写文件:

完成对文

件的操作的时候,你调用close方法来告诉Python我们完成了对文件的使用。注意:不管是写文件或者读文件都需要调用 close方法。模式可以为读模式

(‘r‘)、写模式(‘w‘)或追加模式(‘a‘)。事实上还有多得多的模式可以使用,你可以使help(file)来了解它们的详情。

#!/usr/bin/envpython

def po():

poem=‘‘‘\

abcd efg lala

pyton python so good

i love you!!!

‘‘‘

a=file(‘/poem.txt‘,‘w‘)

#指明我们希望打开的文件和模式来创建一个file类的实例。

a.write(poem)

a.close()

b=file(‘/poem.txt‘)

while True:

line=b.readline()

if len(line)==0:

break

print line

b.close()

po()

  • 存储器:

Python提供一个标准的模块,称为pickle。使用它你可以在一个文件中储存任何Python对象,之

后你又可以把它完整无缺地取出来。这被称为持久地 储存对象。

#!/use/bin/en python

import cPickle as p

mylist=[‘apple‘,‘banana‘,‘carot‘]

shoplistfile=‘shoplist.data‘

print ‘shoplistfileis:‘,shoplistfile

print ‘mylistis:‘,mylist

a=file(‘/root/shoplistfile‘,‘w‘)

p.dump(mylist,a)

a.close()

del mylist

#print ‘mylistis:‘,mylist

b=file(‘/root/shoplistfile‘)

mylist2=p.load(b)

print ‘new listis:‘,mylist2

b.close()

三、异常:

  • try..except

#!/usr/bin/python

# Filename:try_except.py

import sys

try:

s = raw_input(‘Entersomething --> ‘)

except EOFError:

print ‘\nWhy did youdo an EOF on me?‘

sys.exit() # exitthe program

except:

print ‘\nSomeerror/exception occurred.‘

# here, we are notexiting the program

print ‘Done‘

如果没有给出错误或异常的名称,它会处理所有的 错误和异常。对于每个try从句,至少都有一个相关联的except从句。

  • 引发异常:

你可以使用raise语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。你

可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。

你还可以让try..catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。

#!/usr/bin/envpython

class  ShortInputException(Exception):

#继承

def __init__(self,length,least):

Exception.__init__(self)

self.length=length

self.least=least

try:

s = raw_input(‘Enter something -->‘)

if len(s)<3:

raiseShortInputException(len(s),3)

except EOFError:

print ‘\nWhy did you do an EOF on me?‘

except ShortInputException,x:

#提供了错误类和用来表示错误/异常对象的变量。

print ‘ShortInputException: The inputwas of length %d,the expected at least value is %d‘%(x.length,x.least)

  • Try  finally:

假如你在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件.

#!/usr/bin/python

# Filename:finally.py

import time

try:

f = file(‘/poem.txt‘)

while True: # our usual file-readingidiom

line = f.readline()

if len(line) == 0:

break

time.sleep(2)

print line,

finally:

f.close()

print ‘\nCleaning up...closed the file‘

四、python标准库:

Python标准库是随Python附带安装的,它包含大量极其有用的模块。主要讲了2个模块:sys   os

  • sys模块:sys模块包含系统对应的功能

有sys.stdin、sys.stdout和sys.stderr分别对应标准输入/输出/错误流。

#!/usr/bin/python

# Filename: cat.py

import sys

defreadfile(filename):

‘‘‘Print a file to the standardoutput.‘‘‘

f = file(filename)

while True:

line = f.readline()

if len(line) == 0:

break

print line, # notice comma

f.close()

if len(sys.argv)< 2:

print ‘No action specified.‘

sys.exit()

ifsys.argv[1].startswith(‘--‘):

option = sys.argv[1][2:]

if option == ‘version‘:

print ‘Version 1.2‘

elif option == ‘help‘:

print ‘gouri‘

else:

print ‘Unknown option.‘

sys.exit()

else:

for filename in sys.argv[1:]:

readfile(filename)

  • os模块:

这个模块包含普遍的操作系统功能。

这个模块允许即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在

Linux和Windows下运行。

os.name字符串指示你正在使用的平台。比如对于Windows,它是‘nt‘,而对于Linux/Unix

用户,它是‘posix‘。

● os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。

● os.getenv()和os.putenv()函数分别用来读取和设置环境变量。

● os.listdir()返回指定目录下的所有文件和目录名。

● os.remove()函数用来删除一个文件。

● os.system()函数用来运行shell命令。

● os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用‘\r\n‘,Linux使

用‘\n‘而Mac使用‘\r‘。

●os.path.split()函数返回一个路径的目录名和文件名。

os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.

path.exists()函数用来检验给出的路径是否真地存在。

五、更多的python内容:

  • 列表综合:

#!/usr/bin/python

# Filename:list_comprehension.py

listone = [2, 3, 4]

listtwo = [2*i for i in listone if i >2]

print listtwo

  • 在函数中接收列表或者元组:

当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。

由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的

是**前缀,多余的参数则会被认为是一个字典的键/值对。

#!/usr/bin/envpython

defpowersum(power,*args):

total=0

for i in args:

total+=pow(i,power)

print total

powersum(2,3,4)

powersum(2,3)

  • Lambda形式:

lambda语句被用来创建新的函数对象,并且在运行时返回它们。

#!/usr/bin/python

# Filename:lambda.py

defmake_repeater(n):

return lambda s: s*n   s表示新函数的参数

twice =make_repeater(2)

print twice(‘word‘)

print twice(5)

  • exec和eval语句:

exec语句用来执行储存在字符串或文件中的Python语句。

eval语句用来计算存储在字符串中的有效Python表达式:

>>>eval(‘2*3‘)

6

  • assert语句:

assert语句用来声明某个条件是真的。

>>> mylist= [‘item‘]

>>> assertlen(mylist) >= 1

>>> mylist.pop()

‘item‘

>>> assertlen(mylist) >= 1

Traceback (mostrecent call last):

File"<stdin>", line 1, in ?

AssertionError

  • repr函数:

repr函数用来取得对象的规范字符串表示。

六、最后,我们来编写一个程序:

创建你自己的命令行地址簿 程序。在这个程序中,你可以

添加、修改、删除和搜索(字典方法的使用)你的联系人(朋友、家人和同事(类的使用)等等)以及它们的信息(诸如电子邮

件地址和/或电话号码)。这些详细信息应该被保存下来(cPickle)以便以后提取。

自己写的很仓促,还缺乏交互性等一些优化。

#!/usr/bin/envpython

import cPickle as p

class people:

zidian={}

print ‘initiated dic is‘,zidian

def add(self,name,mobile):

people.zidian[name]=mobile

a=file(‘/root/zidian.txt‘,‘w‘)

p.dump(people.zidian,a)

a.close()

print ‘after add one person,the dic is‘,people.zidian

def upd(self,name,mobile):

people.zidian[name]=mobile

a=file(‘/root/zidian.txt‘,‘w‘)

p.dump(people.zidian,a)

a.close()

print ‘after update one person,the dic is‘,people.zidian

def dele(self,name):

del people.zidian[name]

print ‘after delete the dicitmes:‘,people.zidian

def query(self,name):

if people.zidian.has_key(name):

print ‘%s mobile is%s‘%(name,people.zidian[name])

else:

print ‘no informationabout this person‘

person=people()

person.add(‘chen‘,‘13912344‘)

person.add(‘zu‘,‘14‘)

person.upd(‘chen‘,‘123‘)

person.dele(‘zu‘)

person.query(‘chen‘)

时间: 2024-12-23 16:38:04

简明python教程的读书笔记(三)的相关文章

简明python教程的读书笔记

python编程是一件愉快的事情!!! 一.python的特点: 它注重的是如何解决问题而不是编程语言的语法和结构. 当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类 的底层细节. 可移植性 支持面向对象和面向过程的编程 可嵌入性:可以在python代码中嵌入c或者c++ 丰富的库 二.python代码执行的过程: 源代码.py-> 字节码.pyc ->字节码在PVM(Python虚拟机)中执行 二.python IDE: http://www.pydev.o

《简明Python教程》读书笔记

1:help 需要获取Python中任何函数.类型的信息,使用   help('内容')   命令查看帮助,按  q  退出帮助. 2:格式化字符串 format 方法是数据格式化的重要方法. 字符串占位:'{0}xx{1}xx'.format(str1,str2)  就是用str1.str2赋值到0.1括号内 更详细的格式:'{下标:格式}'.format(str)  例如:{0:.3f} 指在0处插入一个保留3位小数的浮点数. 3:常用运算符 加减乘除:+ - * / 乘方:** 整除://

《简明Python教程》学习笔记

<简明Python教程>是网上比较好的一个Python入门级教程,尽管版本比较老旧,但是其中的基本讲解还是很有实力的. Ch2–安装Python:下载安装完成后,在系统的环境变量里,在Path变量后面追加安装目录的地址,即可在cmd下使用Python: CH3–Python3中,print的语法改为了print( ):Python编辑器列表:支持Python的IDE列表: CH4–变量不需要特别的变量类型定义过程: CH5–运算表达式及优先级: CH6–控制流,主控制语句行末以“:”结尾:if

【简明 Python 教程】学习笔记【函数】

定义函数 : 函数通过def关键字定义. def关键字后跟一个函数的 标识符 名称,然后跟一对圆括号.圆括号之中可以包括一些变量名,该行以冒号结尾.接下来是一块语句,它们是函数体. 函数形参: 函数中的参数名称为 形参 而你提供给函数调用的值称为实参 . 局部变量: 当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的.这称为变量的 作用域 .所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始. global语句: glo

[简明python教程]学习笔记2014-05-05

今天学习了python的输入输出.异常处理和python标准库 1.文件 通过创建一个file类的对象去处理文件,方法有read.readline.write.close等 [[email protected] 0505]# cat using_file.py #!/usr/bin/python #filename:using_file.py poem='''Programing is fun when the work is done use Python! ''' f=file('poem.

简明Python教程笔记(二)----用户交互raw_input()

raw_input() python内建函数 将所有输入看做字符串,返回字符串类型 input()对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float ) input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数 例子: #!/usr/bin/env pythonthis_year = 2014name = raw_input('please input your name:')age1 =

简明Python教程笔记(一)

#!/usr/bin/env python#Filename : helloworld.py#The use of 'and"  print 'hello,world!'print "hello,world!" #The use of '''and"""print '''This is a multi-line string. This is the first line.This is the second line."What's

[简明python教程]学习笔记之编写简单备份脚本

[[email protected] 0503]# cat backup_ver3.py #!/usr/bin/python #filename:backup_ver3.py import os import time #source source=['/root/a.sh','/root/b.sh','/root/c.sh'] #source='/root/c.sh' #backup dir target_dir='/tmp/' today=target_dir+time.strftime('

《简明 Python 教程》笔记

<简明 Python 教程>笔记 原版:http://python.swaroopch.com/ 中译版:https://bop.mol.uno/ 有 int.float 没 long.double.没 char,string 不可变. help 函数 如果你有一行非常长的代码,你可以通过使用反斜杠将其拆分成多个物理行.这被称作显式行连接(Explicit Line Joining)5: s = 'This is a string. \ This continues the string.'