Python基础知识(六)
一、包与模块的管理
(一)、模块:后缀为.py的脚本文件
模块models.py
模块views.py
(二)、指令
1、import用法:(导入模块中的所有包)
导入models中的所有成员
在models.py文件中:
在main.py文件中导入models模块
运行结果:
导入views.py中的所有成员:
import views
print('hello')
def hello():
print(models.page)
if __name__ == "__main__":
views.test()
运行结果:
2、from import 的用法
导入文件的指定成员
from models import page
print('hello')
def hello():
print(page)
hello()
运行结果:
导入文件的全部成员:
from models import *
print('hello')
def hello():
print(page)
hello()
运行结果:
3、避免重名,对不同文件里的同名成员进行改名
from models import test as m_test
from views import test as v_test
v_test()
运行结果:
4、importlib.reload(模块)
运行步骤带来的问题:在python的控制台上每次执行导入操作时,先编译为字节码,然后运行模块文件,原文件改变后控制台因为保存的是原字节码生成的文件,所以运行结果不变
在控制台上:
解决办法:使用importlib.reload(模块)重新载入
控制台程序:
>>>import importlib
>>>importlib.reload(models)
<module 'models' from 'E:\\mypython03\\models.py'>
>>>models.test()
优品课堂 uke.cc
models.test()
容易犯的语法错误:对导入文件成员时,不能使用from import语法。
原始.py文件
控制台导入文件:
更改.py文件
(三)、写单独的脚本文件的原因
实现代码重用
节省命名空间
实现数据或服务共享
(四)、步骤:
1、找到模块文件
2、编译为字节码
3、运行模块文件
(五)、搜索范围
1、程序主目录
2、环境变量
3、标准库
4、扩展库(自己写的优先)
(六)、包
鼠标右键点击所建立的project,选择new,点击python package即可。
在包下面建立文件:
使用__init__.py文件
控制台上:
注:建立的包只在第一次使用的时候有效,暴力的代码只执行一次。
二、面向对象编程
特征:封装,继承,多态
例子:
def search_book(title):
print('搜索包含书关键字{}的图书'.format(title))
book = {
'title':'Python入门',
'price':39.00,
'author':'Peter',
'search_book':search_book
}
print(book['title'])
print(book.get('price',0.0))
book.get('search_book')('Python')
运行结果:
(一)分析步骤
OOA面向对象分析
OOD面向对象设计
OOP面向对象编程
(二)实现步骤
1、分析对象特征行为
2、写类描述对象模板
3、实例化,模拟过程
import datetime
class Book:
def __init__(self,title,price,author,publisher,pubdate):
self.title = title
self.price = price
self.author = author
self.publisher = publisher
self.pubdate = pubdate
book1 = Book('C#精典',29.9,'Tom','优品课堂',datetime.date(2016,3,1))
print(book1.title)
print(book1.price)
运行结果:
类的定义
import datetime
class Book:
def __init__(self,title,price=0.0,author=' ',publisher=None,pubdate=datetime.date.today()):
self.title = title
self.price = price
self.author = author
self.publisher = publisher
self.pubdate = pubdate
def print_info(self):
print('当前这本书的信息如下:')
print('标题:{}'.format(self.title))
print('定价:{}'.format(self.price))
print('作者:{}'.format(self.author))
print('出版社:{}'.format(self.publisher))
print('出版时间:{}'.format(self.pubdate))
book1 = Book('C#精典',29.9,'Tom','优品课堂',datetime.date(2016,3,1))
book1.print_info()
book2 = Book('flask 入门到精通')
book2.print_info()
运行结果
(三)repr(self):决定在控制台上打印定义的类的表现形式
import datetime
class Book:
def __init__(self,title,price=0.0,author=' ',publisher=None,pubdate=datetime.date.today()):
self.title = title
self.price = price
self.author = author
self.publisher = publisher
self.pubdate = pubdate
def __repr__(self):
return '<图书 {}>'.format(self.title)
def print_info(self):
print('当前这本书的信息如下:')
print('标题:{}'.format(self.title))
print('定价:{}'.format(self.price))
print('作者:{}'.format(self.author))
print('出版社:{}'.format(self.publisher))
print('出版时间:{}'.format(self.pubdate))
book1 = Book('C#精典',29.9,'Tom','优品课堂',datetime.date(2016,3,1))
book1.print_info()
book2 = Book('flask 入门到精通')
book2.print_info()