1.模块的基础认识
为啥使用模块:
从文件级别组织程序,更加方便管理,且实现了功能的重复利用
提高开发效率
查看当前已加载模块:
打印sys.module,里面包含模块名与对象的映射
为模块起别名:
import temp as tp print(tp.name)
这个的用处一:可以根据用户的输入来选择使用不同模块中的同一功能
inp = input('json or pickle>>>') if inp == 'json': import json as m elif inp == 'pickle': import pickle as m m.dumps({'k':'v'}) m.loads()
这个用处二:为已经导入的模块起别名,对编写可扩展的代码很有用。假设有两个模块xmlreader.py和csvreader.py,它们都定义了函数read_data(filename):用来从文件中读取一些数据,但采用不同的输入格式。可以编写代码来选择性地挑选读取模块
if file_format == 'xml': import xmlreader as reader elif file_format == 'csv': import csvreader as reader data=reader.read_date(filename)
一行导入多个模块(不建议使用):
import sys,os,re
导入方式:
import--- from---import--- from --- import --- as --- from --- import 1,2,3
from --- import *
他表示的是把模块中所有的不是以下划线开头的名字都导入当前位置,不推荐这么使用,因为这样可能会覆盖之前已经定义过的名字,而且可读性很差
记:如果在模块中的名字前加入了_,这样用*则不会被导入
模块导入规范:
首先必须遵循PEP8编程规范
每一行import 应该导入一个模块
如果不是必要的需求,所有的模块都应该在文件的顶端导入
关于导入模块的顺序 先导入内置的 再导入扩展 最后导入自定义
2.把模块当做脚本执行(很常见)
用法链接:http://blog.konghy.cn/2017/04/24/python-entry-program/
# 一个写好的Python文件一般分为两种用途 脚本:文件就是整个程序,用来被执行 模块:文家中存放着好多功能,用来被导入使用 # 在python中内置了全局变量__name__ 当文件被当作脚本执行时,__name__ = __main__ 当文件被当做模块导入时,__name__ = 模块名 # 对于if __name__ == '__main__': 它是用来控制.py文件在不同的应用场景下执行不同的逻辑
3.关于pyc文件
模块在被第一次导入的时候被编译存在pyc文件里(它会把模块中的内容以字节的形式储存),之后导入的可以直接运行pyc文件,以此提高运行速度
4.关于包:
1.凡是在导入语句的时候遇到带点的,这都是关于包才有的导入语法
2.包是一种目录级别的(文件夹级),文件夹是py文件组成的。包的本质是一个包含__init__.py文件的目录
3.在py3下,即使包内没有__init__.py文件,import仍不会报错,首次导入时候它会自动创建,而在py2下必须要存在该文件,否则会报错
4.创建包的目的是为了被导入使用,而不是为了运行,它只是模块的一种形式而已
## 可以用import导入内置或第三方模块(已经在sys.path中),但是要避免使用import导入自定义包的子模块(未在sys.path中),应该是用from---import的绝对或者相对导入
5.软件开发规范:
文件(项目名称) # 在这下面分别创建
文件1:bin # 整个程序的入口
**.py
文件2:conf # 配置文件,里面是一些文件路径,数据库信息等
**.ini
**.py
文件3:core # 核心文件,里面放置核心代码
**.py
文件4:db # 存放数据的文件
**.txt
文件5:lib # 自己写的库,不用安装,导入使用即可
**.py
文件6:log # 日志文件