Python-模块

x33g5p2x  于2021-11-23 转载在 Python  
字(2.6k)|赞(0)|评价(0)|浏览(328)


python模块超详细,小白必看!

Python-模块

1、前言

在python中,一个py文件就是一个模块,可以作为模块被导入和引用,在python中使用模块会使得程序结构更加清晰,维护起来也更加方便。每次编程定义的变量,函数随着py文件的关闭就会被内存释放,现在通过把这些方法放在py文件中可以通过导入的方式调用,极大的提升了程序的效率!

2、模块详细

  • 定义:模块就是一系列功能的结合体

  • 模块的分类:

  • 内置模块

  • 第三方模块

  • 自定义模块

  • 模块的四种表现形式:

  • 使用python编写的代码(.py文件)

  • 已被编译为共享库或DLL的C或C++扩展

  • 包好一组模块的包(文件夹)(包里面通常有一个双下init.py文件)

  • 使用C编写并链接到python解释器的内置模块

3、import句式

  • 想导入py文件,只需要使用import语句即可
  • 格式:import 模块名

1、内置模块

内置模块导入示例

'''导入内置模块'''
import time
time.sleep(1) # 一秒后执行print
print('累了,睡1秒')
# 结果
# 累了,睡1秒

2、自定义模块

自定义模块示例:

'''导入自定义模块'''
'''test.py'''
print('听说你想导入我?')
a = 1
b = 2
'''module.py'''
# 导入自定义模块
import test
if test.a>test.b:
    print('用导入模块的值来比较,a大')
else:
    print('用导入模块的值来比较,b大')
    
# 结果
# 听说你想导入我?
# 用导入模块的值来比较,b大
'''module.py'''
# 导入自定义模块
import test
import test
import test
import test

# 结果
# 听说你想导入我?

注意:多次导入相同模块,只会执行一次

3、第三方模块

第三方模块示例:

python内的第三方模块,需要下载,只要找到想下载的模块,通过pip即可安装,在pycharm安装也非常方便,另外给大家推荐Anaconda,下载好好多第三方模块不需要下载。

因为我使用的是pycharm,给大家举个栗子:

'''使用第三方模块'''
'''使用第三方模块'''
import requests
url = 'https://www.baidu.com/'
res = requests.get(url)
print(res.status_code)
print(res.text)
# 结果大家自己动动手叭~

4、import底层原理

  • import语句导入模块之后,通过模块点的方式就可以使用到模块中所有的名字,并且肯定不会产生冲突!
    示例如下:

  • 首次导入模块发生的事:

  • 运行导入文件(import句式.py)产生该文件的全局名称空

  • 运行test.py文件

  • 产生test.py全局名称空间 运行test文件内代码 将产生的名字全部存档于test.py名称空间

  • 在导入文件名称空间产生一个test的名字指向test.py全局名称空间

  • 图示如下:

4、from /import句式

  • from/import语句与import大致一样,使用from/import句式可以直接引用被导入文件中的名字使用
    test.py文件上面定义好了,实例如下:
'''module.py'''
# 导入自定义模块
from test import a

print(a)
a = a+1
print(a)
# 结果
听说你想导入我?
1
2
'''显然module.py中没有a,a被导入到当前名称空间,可以直接使用,也可以对a进行修改'''
  • from/import语句支持将文件所有名字导入
  • 格式:from 模块名(文件名)import *
'''module.py'''
# 导入自定义模块
from test import *

print(a,b)

#结果
听说你想导入我?
1 2

导入模块的扩展用法

  1. 起名

既可以给模块名起别名也可以给模块中某个名字起别名
实例如下:

import test as t
print(t.a)

from test import a as A
print(A)
# a的结果都为1
  • 连续导入

  • 格式:import 模块1,模块2

  • 格式2:from 模块名1 import 名字1,名字2,名字3

  • 可以连续导入多个模块,但是只有当多个模块功能相似或者属于同一个系列

  • 如果功能不同并且不属于一个系列 那么推荐分行导入

  • import 模块名1
    import 模块名2

  • 通用导入

格式:__ all __ = [‘名称1’ , ‘名称2’]
实例如下:

'''test.py'''
print('听说你想导入我?')
a = 1
b = 2

# 只允许使用名称a
__all__ = ['a']

# 如果导入所有名称,只能使用a,使用其他名称报错
'''module.py'''
# 导入自定义模块
from test import *
print(a,b)
# NameError: name 'b' is not defined

5、模块导入的顺序

  1. 先从内存中查找
  2. 再去内置模块中查找
  3. 最后去sys.path系统路径查找(自定义模块)
  4. 最后如果没有查找到则报错
    实例如下:
import sys
print(sys.path)  
'''结果中第一个元素永远是当前执行文件所在的路径'''

当某个自定义模块查找不到的时候解决方案
	1.自己手动将该模块所在的路径添加到sys.path中
    	import sys
        sys.path.append(r'E:\fourth\test.py')
    2.from...import...句式
    	from 文件夹名称.文件夹名称 import 模块名
        from 文件夹名称.模块名称 import 名字

6、补充知识

判断文件类型:

if __ name __ = ‘__ main __’: //后期会出一篇有关的教程

作用为判断py文件是否作为模块文件还是执行文件

循环导入

  • 如果在编程的时候有循环导入的情况,说明程序设计的不合理。
    例如:

修改方法:

  • 调整顺序:

  • 调用函数

注意,在自定义模块名的时候,不要和内置模块名相同!

相关文章