1、定义和导入模块
p1中简单定义变量、类和函数
a = 1
b = 2
def Add(x, y):
return x+y
class Kid:
def __init__(self, age):
self.age = age
def laugh(self):
print('我%d岁了。'%self.age)
导入用 import
变量的导入和使用
将目录为ch7下文件名为p1中的a导入另一个文件中
import ch7.p1
print(ch7.p1.a)
函数的导入和使用
调用p1里面的函数
print(ch7.p1.Add(1,2))
类的导入和使用
kid = ch7.p1.Kid(18)
kid.laugh()
别名
每次都写一长串太麻烦,为了简便可以给包起别名
import ch7.p1 as m
print(m.a)
还可以使用from 模块名 import 元素
(就是从哪个包里导入什么元素)
from ch7.p1 import a
print(a)
可以导入多个,用逗号的方式直接加在import后面
from ch7.p1 import a, b,Add
print(a)
print(b)
print(Add(1,2))
全部导入用*
from ch7.p1 import *
print(a)
print(b)
print(Add(1,2))
kid = Kid(18)
kid.laugh()
导入时控制权限
主动的方式让访问者知道哪些可以被导入,哪些不能被导入
(左右双下划线all,列表,里面是可以被导入的)
__all__ = ['a', 'Add']
__all__ = ['a', 'b', 'Add', 'Kid']
2、包
用包来组织多个模块
(包就相当于一个文件夹)
新建包,右键目录ch7,new一个Pyhton Pachage,名字为t1,建立好之后里面自带了一个__int__.py空文件
(此文件在导入时已经被执行)
文件中输入一行打印代码
print('i am package line')
从其他.py文件中调用
import ch7.t1
命名空间
t1 和 t2 包里都有p1模块,p1模块下都有变量a ,怎么区分呢,通过引入取别名,让前面的引入是不一样的
import ch7.t1.p1 as m1
import ch7.t2.p1 as m2
print(m1.a)
print(m2.a)
命名空间解决了变量重名或模块重名的问题
若在init包里直接导入公共模块,其他多个文件可以直接调用这个包里的模块
3、检索目录
包,python也会在目录里挨着找需要的包或者模块,如果有,就会被成功导入,如果没有就会报错
导入嵌套 比如3导入4,4导入5,5导入3
4、python的模块
4.1 python的标准模块
pyhton内部的、被写好的,可以直接被使用
sys,time,os,calendar,urlllib,json,re,math,decimal,shutil,
logging,tkinter
4.2 python 的第三方模块
比如说连接MySQL数据库
pymysql 数据库
cx_Oracle 连接Oracle数据库的
pygame 开发小游戏
PIL 处理图形,图片
xlrd 处理excel读取和写入
xlwt 处理excel读取和写入
selinium 自动化测试相关的包
numpy 图形曲线相关的计算
几个方法
查看全部模块: help(‘modules’) (IDLE打开)
安装/卸载:pip install / uninstall xxx (在pycharm终端里)
查看已经安装的三方模块:pip list (cmd运行环境下查看,在pycharm终端里也可)
以主程序的方式去运行这个代码
若在p1中加入一行测试代码,比说说print(),在p2导入p1时,这个代码也会被执行,为了不让别人调用时执行这段代码,可以在代码前加入一行
if __name__ == '__main__':
print(Add(4, 5))