您的位置:首页 > 编程语言 > Python开发

学习Python (八)

2015-12-03 08:06 639 查看
转载自龙腾测试

本次学习目标

1、模块

2、包

3、类和实例

4、异常

5、assert

6、with…as

7、python标准库

8、json和xml

9、数据库

10、smtp

1、模块

在python中,一个 .py文件就称之为一个模块(Module),模块能定义函数,类和变量。模块里也能包含可执行的代码,定义一下模块 print_name

print ‘this module name is print_name’

def func(name):

print “Hello:”,name

1.1 import

导入模块,导入模块时模块会被执行

import module1[,module2[,…moduleN]

导入模块

import print_name

调用模块中的函数

print name.func(‘jia’)

注:一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍的执行。

1.2 from…import

允许从一个模块文件里获取特定的变量名和函数。

语法如下:

from modname import name1[,name2[,…nameN]]

导入模块中的函数

from print name import func

调用函数

func(‘jia’)

1.3 reload

一个模块只会被导入一次,如果想重新导入模块需要reload()函数,语法如下:

reload(module_name)

导入模块

import print_name

重新导入模块

reload(print_name)

调用模块中的函数

print name.func(‘jia’)

1.4 _ _ name _ _

def func(name):

print “Hello:”,name

if _ _ name _ _ ==’ _ _ main _ _’:

func()

1.5 模块的搜索路径

import sys

sys.path

[‘D:\devpython’,’D:\Python27\Lib\idlelib’,

‘C:\Windows\system32\python27.zip’,’D:\Python27\DLLs’,

‘D:\Python27\lib’,’D:\Python27\lib\platwin’,’D:\Python27\lib\lib-tk’,

‘D:\Python27’, ‘D:\Python27\lib\site-packages’]

2 包

2.1 什么是包

pythond的代码目录就是包,包可以包含包和模块,包和普通目录有一点区别,包内必须要有_ _ init _ _ .py文件,该文件可以是空的,它表明该目录是一个python包

①包是目录

②目录必须有_ _ init _ _ .py

③目录可以包含目录,目录和子目录间用.分割

2.2 包导入

①import dir.mod

②from dir import mod

③from dir.mod import x

2.3 包的搜索路径

sys.path

2.4 创建包

①新建example目录

②example内新建_ _ init _ _ .py空文件,和testmodule模块

③example新建sub目录内同样放入,_ _ init _ _ .py testmodule.py

name = ‘张三’

print ‘this is a test module’

def test():

print ‘this is a module func’

return ‘func’

if_ _ name _ _ ==’ _ _ main _ _’:

test()

2.5 import 导入包内模块 方法一:

import example.testmodule

from…import…导入模块 方法二:

from example import testmodule

print testmodule.name

from…import…导入模块变量

from example.testmodule import name

print name

from…import导入包内子目录的模块

import example.sub.testmodule

print example.sub.testmodule.name

from…import导入包内子目录的模块

import example.sub.testmodule as m

print m.name

from example.sub import testmodule

print testmodule.name

3 类和实例

3.1 什么是类和实例

面向对象最重要的概念就是类和实例,类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”,每个实例都拥有相同的方法,但各自的数据可能不同,类使用class关键字创建。

3.2 创建一个类

class Person:

pass

p = Person()

print p

3.3 self

类的方法与普通的函数只有一个特别的区别,它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值,这个特别的变量指对象本身,按照惯例它的名称是self。

3.4 对象的方法

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

class Person:

def sayHi(self):

print ‘Hello,how are you?’

p = Person()

p.sayHi()

3.5 _ _ init _ _ 方法

_ _ init _ _方法在类的一个实例被建立时运行。这个方法用来对实例做一些初始化。

class Person:

def _ _ init _ _(self,name):

self.name = name

def sayHi(self):

print ‘Hello,my name is’,self.name

p = Person(‘jia’)

p.sayHi()

3.6 类和实例的变量

类的变量由一个类的所有实例共享使用。实例只有一个类变量的拷贝,所以当某个实例对类的变量做了改动的时候,这个改动会反映到所有其它的实例上。

实例的变量由类的每个实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然实例的变量有相同的名称,但是是互不相关的。

class Person:

”’定义人.”’

population = 0

def init(self, name):

”’初始化一个人.”’

self.name = name

print ‘(初始化 %s)’ % self.name

Person.population += 1

def sayHi(self):

print ‘Hi, 我叫%s.’ % self.name

def howMany(self):

if Person.population == 1:

print ‘只有我一个人.’

else:

print ‘我们有 %d 人.’ % Person.population

zhangsan = Person(‘张三’)

zhangsan .sayHi()

zhangsan .howMany()

lisi = Person(‘李四’)

lisi.sayHi()

lisi.howMany()

zhangsan.sayHi()

zhangsan.howMany()

3.7 继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。

class SchoolMemb
4000
er:

”’定义学校成员”’

def _ _ init _ _ (self,name,age):

self.name = name

self.age = age

print’(初始化学校成员:%s)’% self.name

def tell(self):

”’成员细节”’

print ‘Name:”%s”Age:”%s”’ %(self.name,self.age)

定义老师

class Teacher(SchoolMember):

”’定义学校老师”’

def _ _ init _ _ (self,name,age,salary):

SchoolMember._ _ init _ _ (self,name,age)

self.salary = salary

print’(初始化学校老师:%s)’% self.name

def tell(self):

SchoolMember.tell(self)

print ‘工资:”%d”’ % self.salary

定义学生

class Student(SchoolMember):

”’定义学校学生”’

def _ _ init _ _ (self,name,age,marks):

SchoolMember. _ _ init _ _ (self,name,age)

self.marks = marks

print’(初始化学习学生:%s)’% self.name

def tell(self):

SchoolMember.tell(self)

print’分数:”%d”’% self.marks

t = Teacher(‘张三’,40,30000)

s = Student(‘李四’,22,75)

print #打印空行

members = [t,s]

for member in members:

member.tell() #遍历老师和学生
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息