【Python百日基础系列】Day09 - Python 模块和包

【Python百日基础系列】Day09 - Python 模块和包,第1张

【Python百日基础系列】Day09 - Python 模块和包

文章目录
  • 一、什么是模块
  • 二、为什么要使用模块
  • 三、导入模块
    • 3.1 导入模块
      • 3.1.1. import module1[, module2[,... moduleN]
      • 3.1.2 import modname as mn
    • 3.2 导入模块中的方法(函数)
      • 3.2.1 from modname import *
      • 3.2.2 from modname import name1[, name2[, ... nameN]]
      • 3.2.3 from modname import name1 as mn
  • 四、包
  • 五、导包注意事项

一、什么是模块

Python模块就是一组功能的组合;实质上一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。
Python的模块分为四个类别:

  1. 使用python编写的代码(.py文件);
  2. 已被编译为共享库或DLL的C或C++扩展;
  3. 包好一组模块的包
  4. 使用C编写并链接到python解释器的内置模块;
二、为什么要使用模块
  1. 避免反复造轮子,提高开发效率
  2. 把相关的代码分配到一个模块里,逻辑性更强,代码更好用,更易懂。
三、导入模块 3.1 导入模块

以random模块为例,导入模块有两种方法

3.1.1. import module1[, module2[,… moduleN]

示例

import sys
 
print('命令行参数如下:')
for i in sys.argv:
   print(i)
 
print('nnPython 路径为:', sys.path, 'n')
3.1.2 import modname as mn
import random as rd	# 给导入的模块起别名
import numpy as np
import pandas ad pd
3.2 导入模块中的方法(函数)

以random模块为例,导入模块中的方法(函数)有两种方法:

3.2.1 from modname import *

通常并不主张使用 * 这种方法来导入模块,因为这种方法经常会导致代码的可读性降低。

from random import *		# 导入所有方法
3.2.2 from modname import name1[, name2[, … nameN]]

推荐使用这种方法,除非是要导入的子模块有可能和其他包的子模块重名,那就给它起个别名。

from random import randint, random		# 导入一个或多个方法
3.2.3 from modname import name1 as mn
 from random import randint as rd  # 给导入的方法起别名
四、包

目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包。
最简单的情况,放一个空的文件:__init__.py就可以了。当然这个文件中也可以包含一些初始化代码。
包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。

# 导入子模块:sound.effects.echo。 他必须使用全名去访问:
import sound.effects.echo
# 引用需要全路径
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
# from导入子模块的方法,引用比较简单
from sound.effects import echo
# 引用只需导入的模块
echo.echofilter(input, output, delay=0.7, atten=4)
# 导入模块中的方法(函数)
from sound.effects.echo import echofilter
# 直接引用函数即可
echofilter(input, output, delay=0.7, atten=4)
五、导包注意事项
  1. 注意当使用 from package import item 这种形式的时候,对应的 item 既可以是包里面的子模块(子包),或者包里面定义的其他名称,比如函数,类或者变量。
  2. import 语法会首先把 item 当作一个包定义的名称,如果没找到,再试图按照一个模块去导入。如果还没找到,抛出一个 :exc:importError 异常。
  3. 反之,如果使用形如 import item.subitem.subsubitem 这种导入形式,除了最后一项,都必须是包,而最后一项则可以是模块或者是包,但是不可以是类,函数或者变量的名字。
  4. 无论是隐式的还是显式的相对导入都是从当前模块开始的。主模块的名字永远是"main",一个Python应用程序的主模块,应当总是使用绝对路径引用。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/4676445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存