python学习笔记(11)---(模块与包)
创始人
2024-03-01 17:13:23
0

第九章 模块与包

1.模块(modules)

(1)概念:将实现某一特定功能的代码放置在一个文件中,以便于其他程序进行导入使用,可以避免函数名、变量名的冲突,该文件称为模块,拓展名为.py

(2)作用

  • 模块 = 函数 + 类 + 变量
  • 程序规模不断变大需要分为多个文件,以提高维护性
  • 模块可以重复导入,提高重用性

(3)分类

<1> 内置模块:当前使用,python内置模块大约有200多个标准模块。如:

<2> 自定义模块:第三方的模块

(4)模块常见的导入方法:五种

  • import 模块名
  • from 模块名 import 功能名
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名

(5)使用import导入模块

  • import 模块名
  • import  模块名1,模块名2……  # 导入多个模块
import math
print(math.sqrt(9))

(6)使用from......import语句导入模块

  • 作用:使用import导入模块时,如果只需要部分函数,可以通过from实现、

PS:使用时不需要增加模块名前缀

from math import sqrt, floor
print(sqrt(9), floor(10.88))  # 3.0 10

PS:使用from……import导入的模块,必须保证导入的内容名称是唯一的。若导入模块有相同的变量、函数、类。则会覆盖之前导入的同名内容,因此需要检查,别名应简洁。

(7)使用as关键字为导入模块定义别名

  • 原因:某些情况下,模块名称过长,建议使用as命名一个较为短的新名称,调用时使用新名称操作
import time as t
print('hello')
t.sleep(3)
print('world')
# hello
# world

(8)自定义模块

  • 作用:将相关代码写在一个单独的文件中,并命名为“.py”。自行创建的模块名称不能与标准库中的模块名称相同

例:新建一个模块的文件,实现素数的判断

当前目录新建prime.py
输入代码后保存退出

def fun_prime(num):if num < 2:print('请输入大于2的整数')else:for i in range(2, num):if num % 2 == 0:return 0else:return 1
# 2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 

优化:新建一个python文件加载上述模块,实现100以内的素数输出

import prime
for i in range(2, 100):if prime.fun_prime(i) == 1:print(i, end=' ')
  • 自定义模块的功能测试

作用:在编写完自定义模块以后,最好在自定义模块中进行提前测试,以防止抛出异常

魔方方法:_ _name_ _():每个模块的定义中都包括一个记录模块名称的字符串变量,随着运行的页面不同,返回值不同。

当前页面执行会输出_ _main_ _,
print(__name__)def fun_prime(num):if num < 2:print('请输入大于2的整数')else:for i in range(2, num):if num % 2 == 0:return 0else:return 1  # __main__
在其他文件调用执行:输出模块文件名
(随着程序执行的位置不同,_ _name_ _返回的结果也不同)
结论:模块自行测试的格式如下
if __name__=='__main__':  # 如果是当前页面执行if fun_prime(5):print('素数')else:print('平数')
# 此时不需要其他程序就可以在文件中执行测试

PS:_ _name_ _一般用于自定义模块测试,还可用于编写程序的入口:

def  main():  

# 执行的功能

# 打印的功能

# 增删的功能

if _ _name_ _ == ‘_ _ main_ _’

main()

(9)模块搜索目录

<1> 当使用import语句导入模块时,默认情况会按照以下顺序查找

  • 执行python文件的当前目录
  • python path(环境变量)
  •  python解释器安装目录

<2> 可以通过sys.path中查找检索目录

import sys
print(sys.path)
# ['D:\\pythontest', 'D:\\pythontest', 'D:\\Python\\python39.zip', 'D:\\Python\\DLLs', 'D:\\Python\\lib', 'D:\\Python', 'C:\\Users\\ASUS\\PycharmProjects\\Test\\venv', 'C:\\Users\\ASUS\\PycharmProjects\\Test\\venv\\lib\\site-packages']

例:输出大于m且紧随m的k个素数

def fun_prime(num):if num < 2:print('请输入大于2的整数')else:for i in range(2, num):if num % i == 0:return 0else:return 1import sss50a = int(input('请输入起始值:'))
b = int(input('请输入需要的素数个数:'))
t = 0  # 计数
i = a + 1
while t < b:if sss50.fun_prime(i) == 1:t = t + 1print(i, end=' ')i = i + 1
请输入起始值:12
请输入需要的素数个数:4
13 17 19 23

2.包(package)

(1)概念:将有联系的模块组织在一起,放置在同一个文件夹下,并且该文件内部有一个名为_ _init_ _.py的文件,此文件夹集合称为包

(2)_ _init_ _.py文件在创建包后会自动新建,默认为空,其作用:

  • 包的标识,不能删除
  • 定义all语句来规定那些模块可以导入
  • 编写python代码(不推荐),应内容简略

(3)制作包

方法:左侧侧边栏—>new-->python Package-->输入包名—>回车-->在包中新建模块

PS:新建包之后,_ _init_ _.py会自动创建

(4)导入包

  • 格式1:import 包名.模块名  (使用:包.模块名.方法名形式进行使用)
  • 格式2:from 包名 import 模块名(模块.方法名 进行使用)

PS:格式2的from形式导入包中的某个模块时,必须在_ _init_ _.py中添加all=[‘模块1.py’,’模块2.py’,…’模块n.py’]来控制允许导入的模块列表

(5)第三方包或模块的pip下载:命令行中输入pip  help查看

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...