第15课 模块与包

一、同一包里面模块的调用

1、模块的概念

1)一般的行数--500到800行

2)一个xxx.py文件就称为一个模块(module)

2、模块化的其他好处

1)以库的形式封装功能,方便给别的代码调用。

  a、库其实就是模块和包

  b、可以使用自己写的库,python标准库和第三方库

2)避免变量名冲突(包括函数名)

  a、如果一个代码文件特别大,变量名就容易发生重复。这时,需要定义不同的变量名和函数名

  b、如果采用模块分割代码,每个模块文件代码都不是很多,就可以缓解这个问题

  c、每个模块中变量名的作用域只在本模块中

3、模块的使用

1)同一个包里面的模块调用:import 模块名---执行模块

import mathFunction  # 导入模块名



#  执行结果

******begin mathFunction!******
******end  mathFunction!******

2)函数/变量的调用---模块名.函数

import mathFunction  # 导入模块名
mathFunction.sumFun(1, 2)


# 执行结果
******begin mathFunction!******
******end  mathFunction!******
1 + 2 = 3

3)from 模块名 import 函数名/变量

from mathFunction import sumFun
sumFun(1, 2)


# 执行结果

******begin mathFunction!******
******end  mathFunction!******
1 + 2 = 3

4)导入多个函数/变量(这个方法只作为了解)

from mathFunction import sumFun, VERSION, difFun
sumFun(1, 2)
print(VERSION)
difFun(9, 3)



# 执行结果

******begin mathFunction!******
******end  mathFunction!******
1 + 2 = 3
1.0
9 - 3 = 6

5)全部导入:import 模块名 == from 模块 import 

from mathFunction import *
sumFun(58, 69)
difFun(108, 36)


# 执行结果
******begin mathFunction!******
******end  mathFunction!******
58 + 69 = 127
108 - 36 = 72

6)导入多个模块:import module1, module2   或者如下:

import 模块1

import 模块2

from mathFunction import sumFun
import lib1

sumFun(12, 13)


# 执行结果
******begin mathFunction!******
******end  mathFunction!******
******lib1*******
12 + 13 = 25

4、导入函数或者变量取别名:from lib2 import sumFunc as blibF

1)as---取别名     好处:避免冲突、长名字缩短

from lib2 import sumFun as blibF
from mathFunction import sumFun as mathF

blibF(2, 5)
mathF(3, 8)


# 执行结果

******lib2_begin******
******end******
******begin mathFunction!******
******end  mathFunction!******
2 + 5 + 5 = 12
3 + 8 = 11

二、不同包里面模块的调用

1、把许多模块按照功能放到不同的目录中来组织模块,这些存放模块文件的目录称之为包(package)。

2、import 包名.模块名

3、只要去导入这个包,对应的__init__.py会被执行

import sys
sys.path.append('D:workHelloWorldsongqinpython')  # 一定要添加环境变量
import newP.newPTest
newP.newPTest.newP()


# 执行结果


I am newPtest.__init__.py
*********newPTest*********
newPFun!

4、包里面包含子包的导入方法

import sys
sys.path.append('D:workHelloWorldsongqinpython')
import newP.sonP.sonPTest
newP.sonP.sonPTest.sonP()



# 执行结果

I am newPtest.__init__.py
---sonPTest---
HelloPython!

对于比较长的导包,使用别名,更方便。

import sys
sys.path.append('D:workHelloWorldsongqinpython')
import newP.sonP.sonPTest as newPp  # 对于比较长的导包,最好用别名
newPp.sonP()


# 执行结果
I am newPtest.__init__.py
---sonPTest---
HelloPython!

三、联合使用

1、标准库:python安装包里面提供的功能模块和包。主要包括:

1)内置类型和函数。比如len()、int()、open()等,可以直接使用,不用import。

2)功能模块:包含程序设计所需的常用的功能;需要用import导入它们就可以使用

import time
print(time.strftime('%Y_%m_%d %H:%M:%S'))  # 获取系统当前时间

# 执行结果

2018_12_09 23:49:25

2、模块的搜索规则:

1)import sys----sys.path:解释器加载的路径

>>> import sys
>>> sys.path
['', 'E:\software\python\Lib\idlelib',   'E:\software\python\python36.zip', 'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages']

# 'E'前面的空格,意思为当前目录

3、增加模块路径

1)cmd----set PYTHONPATH=F:;G:---最终到sys.path里面

>>> import sys
>>> sys.path
['', 'E:\software\python\python36.zip',  'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages']
>>> ^Z


C:Users62588>set PYTHONPATH=F:

C:Users62588>python
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'F:\', 'E:\software\python\python36.zip', 'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages']

# 原来环境变量只有E盘,后来通过set PYTHONPATH=F:,添加F盘

2)sys.path.append('路径')-----临时增加

import sys
print(sys.path)


#执行结果
['D:\software\HelloWorld\songqin\python\lesson18 模块与包_使用库', 'D:\software\HelloWorld', 'E:\software\python\python36.zip', 'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages', 'D:\software\pycharm\helpers\pycharm_matplotlib_backend']

添加环境变量

sys.path.append('E:\') # 这里写两个,是为了防止第一个被转义
print(sys.path)


#执行结果,尾部添加了E盘
['D:\software\HelloWorld\songqin\python\lesson18 模块与包_使用库', 'D:\software\HelloWorld', 'E:\software\python\python36.zip', 'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages', 'D:\software\pycharm\helpers\pycharm_matplotlib_backend', 'E:\']

3)pip下载第三方库---lib或者lib/site-package

4)pip安装源--默认国外 ,可以修改为国内的安装源,比如豆瓣。

5)卸载---pip uninstall selenium

6)升级--举例:升级pip---pip install upgrade pip或者 pip install -u pip

7)升级指定的版本:pip install SomePackage == 1.0.4  ;   pip install SomePackage >= 1.0.4

原文地址:https://www.cnblogs.com/nick1998/p/10091323.html