Python-模块与包

  1. 模块

1、模块

一个py文件就是一个模块,文件名为xxx.py模块名则是xxx,导入模块可以引用模块中已经写好的功能。
要引用模块名称空间中的名字,需要加上该前缀,模块名应该遵循小写形式。

1.1 import语句

import os 					# 导入模块
import time					# 多次导入
import time as ti			# 将导入的模块重命名
time.sleep(1)				# 使用模块名.函数名调用
ti.sleep(1)					# 直接使用修改过的模块名.函数调用

"""
导入顺序:
1. python内置模块
2. 第三方模块
3. 程序员自定义模块
"""

1.2 from-import 语句

from…import…与import语句基本一致,唯一不同的是:使用import time导入模块后,引用模块中的名字都需要加上time.作为前缀。

import os 						# 导入模块
from time import sleep			# 可以直接调用sleep
from time import sleep as ts	# 将导入的函数重命名
from time import *				# 将模块内的所有东西导入,相同的会被覆盖,谨慎操作
sleep(1)						# 直接使用函数名调用
ts(1)							# 直接用修改过的函数名调用

1.3 搜索模块的路径与优先级

模块的四个通用类别,分别是:

1、使用纯Python代码编写的py文件

2、包含一系列模块的包

3、使用C编写并链接到Python解释器中的内置模块

4、使用C或C++编译的扩展模块
在导入一个模块时,如果该模块已加载到内存中,则直接引用,否则会优先查找内置模块,然后按照从左到右的顺序依次检索sys.path中定义的路径,直到找模块对应的文件为止,否则抛出异常。sys.path也被称为模块的搜索路径,它是一个列表类型

模块的搜索路径
>>> import sys
>>> sys.path
['F:\\Program Files\\PyCharm Community Edition 2020.1.4\\plugins\\python-ce\\helpers\\pydev', 
...,
'D:\\python']
# 导入的文件不在列表内可以自行添加
>>> sys.path.append('F:\Program Files')
>>> sys.path
['F:\\Program Files\\PyCharm Community Edition 2020.1.4\\plugins\\python-ce\\helpers\\pydev',
...,'D:\\python',
'F:\\Program Files']

1.4 if name == ‘main

一个Python文件有两种用途,一种被当主程序/脚本执行,另一种被当模块导入,为了区别同一个文件的不同用途,每个py文件都内置了__name__变量,该变量在py文件被当做脚本执行时赋值为“main”,在py文件被当做模块导入时赋值为模块名
可以在文件末尾基于__name__在不同应用场景下值的不同来控制文件执行不同的逻辑
if的子代码块中编写针对模块功能的测试代码,这样py文件在被当做脚本运行时,就会执行测试代码,而被当做模块导入时则不用执行测试代码。

if __name__ == '__main__':
	代码				#模块被当做脚本执行时运行的代码,#如果是被导入则不允许。

2、包

随着模块数目的增多,把所有模块不加区分地放到一起也是极不合理的,于是Python为我们提供了一种把模块组织到一起的方法,即创建一个包。包就是一个含有__init__.py文件的文件夹,文件夹内可以组织子模块或子包

pool/                #顶级包
├── __init__.py     
├── futures          #子包
│   ├── __init__.py
│   ├── process.py
│   └── thread.py
└── versions.py      #子模块

2.1 导入包

1、包属于模块的一种,因而包以及包内的模块均是用来被导入使用的
2、关于包相关的导入语句也分为import和from … import …两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,否则非法。可以带有一连串的点,如import 顶级包.子包.子模块,但都必须遵循这个原则。但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类
3、包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间
4、import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值