• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Python-模块

开发技术 开发技术 3小时前 1次浏览

目录
  • Python-模块
    • 1、前言
    • 2、模块详细
    • 3、import句式
      • 1、内置模块
      • 2、自定义模块
      • 3、第三方模块
      • 4、import底层原理
    • 4、from /import句式
      • 导入模块的扩展用法
    • 5、模块导入的顺序
    • 6、补充知识
      • 判断文件类型:
      • 循环导入

Python-模块

Python-模块

1、前言

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

2、模块详细

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

  • 模块的分类:

    • 内置模块
    • 第三方模块
    • 自定义模块
  • 模块的四种表现形式:

    • 使用python编写的代码(.py文件)
    • 已被编译为共享库或DLL的C或C++扩展
    • 包好一组模块的包(文件夹)(包里面通常有一个双下init.py文件)
    • 使用C编写并链接到python解释器的内置模块

3、import句式

  • 想导入py文件,只需要使用import语句即可

  • 格式:import 模块名


1、内置模块

Python-模块

内置模块导入示例

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

2、自定义模块

Python-模块

自定义模块示例:

'''导入自定义模块'''
'''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-模块

第三方模块示例:

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

  • 没有pip的小伙伴点👉[pip官网](pip · PyPI)

  • 没有Anaconda的小伙伴点👉[Anaconda官网](Anaconda | Individual Edition)

  • 没有pycharm的小伙伴点👉[pycharm官网](PyCharm: the Python IDE for Professional Developers by JetBrains)

  • pip安装命令:pip install 包名/模块名

  • pycharm安装步骤:

    • Settings>>Project>>Python interpreter
    • Python-模块

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

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

4、import底层原理

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

示例如下:

Python-模块


Python-模块

  • 首次导入模块发生的事:
    • 运行导入文件(import句式.py)产生该文件的全局名称空
    • 运行test.py文件
    • 产生test.py全局名称空间 运行test文件内代码 将产生的名字全部存档于test.py名称空间
    • 在导入文件名称空间产生一个test的名字指向test.py全局名称空间
  • 图示如下:
    Python-模块

4、from /import句式

Python-模块

  • 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
    
  2. 连续导入

    • 格式:import 模块1,模块2
    • 格式2:from 模块名1 import 名字1,名字2,名字3
    • 可以连续导入多个模块,但是只有当多个模块功能相似或者属于同一个系列
    • 如果功能不同并且不属于一个系列 那么推荐分行导入
    • import 模块名1
      import 模块名2
  3. 通用导入

    格式:__ 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:fourthtest.py')
    2.from...import...句式
    	from 文件夹名称.文件夹名称 import 模块名
        from 文件夹名称.模块名称 import 名字

6、补充知识

判断文件类型:

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

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

循环导入

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

例如:


Python-模块

修改方法:

  • 调整顺序:
    Python-模块

  • 调用函数

Python-模块


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


Python-模块



程序员灯塔
转载请注明原文链接:Python-模块
喜欢 (0)