python学习笔记(11)---(模块与包)

news2024/10/6 10:37:08

第九章 模块与包

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 0
        else:
            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 0
        else:
            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 0
        else:
            return 1

import sss50

a = int(input('请输入起始值:'))
b = int(input('请输入需要的素数个数:'))
t = 0  # 计数
i = a + 1
while t < b:
    if sss50.fun_prime(i) == 1:
        t = t + 1
        print(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查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/47210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RtspServer之LibRtsp解决闪退 新增鉴权(用户名密码登录)

编程语言&#xff1a;C 目标平台&#xff1a;arm&#xff08;hi3519&#xff09;注&#xff1a;因为代码是纯C语言按道理可以移植到各种平台 基础库&#xff1a;librtsp&#xff08;存在功能补全&#xff0c;有一定的bug&#xff09; 因为项目需求需要在海思平台实现IPC…

C++ Reference: Standard C++ Library reference: Containers: list: list: crend

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/crend/ 公有成员函数 <list> std::list::crend const_reverse_iterator crend() const noexcept; 返回反向结束的常量反向迭代器 返回一个const_reverse_iterator&#xff0c;指向容器中第一个元素…

领悟《信号与系统》之 采样定理

采样定理采样定理一、采样定理结论二、奈奎斯特间隔和频率计算公式及例题&#xff1a;三、信号自然采样&#xff08;脉冲采样&#xff09;四、信号理想采样&#xff08;冲激采样&#xff09;采样定理 连续时间信号也叫模拟信号。在一定条件之下&#xff0c;模拟信号可以用该信…

LDAP客户端操作方法

本文章简单介绍LDAP Admin客户端的使用方法&#xff0c;客户端工具地址为&#xff1a; https://download.csdn.net/download/u013896064/87209312 1、前提 我使用的是Ubuntu的虚拟机安装了一个LDAP服务&#xff0c;初始化完成并配置好密码&#xff0c;本次例子里面我使用的U…

nodejs+vue音乐网站与分享平台

目 录 摘 要 I 1 绪论 1 1.1研究背景 1 1.2研究现状 1 1.3研究内容 2 2 系统关键技术 3 2.1 Spring Boot框架 3 2.2 JAVA技术 3 2.3 MYSQL数据库 4 2.4 B/S结构 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2经济可行性…

Windows OpenGL 图像色彩替换

目录 一.OpenGL 图像色彩替换 1.原始图片2.效果演示 二.OpenGL 图像色彩替换源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL…

[附源码]计算机毕业设计JAVA网上花店系统

[附源码]计算机毕业设计JAVA网上花店系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

SpringBoot基于若依项目工时统计成本核算管理源码带文字教程

该系统是前后端分离的架构&#xff0c;前端使用Vue2&#xff0c;后端使用SpringBoot2。 技术架构 技术框架&#xff1a;SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 Mysql5.7 运行环境&#xff1a;jdk8 IntelliJ IDEA maven 宝塔面板 本地搭建文…

MySQL数据库行级锁之间隙锁、临键锁

间隙锁 默认情况下&#xff0c;InnoDB在 REPEATABLE READ事务隔离级别运行&#xff0c;InnoDB使用 next-key 锁进行搜索和索引扫描&#xff0c;以防止幻读。 索引上的等值查询(唯一索引)&#xff0c;给不存在的记录加锁时, 优化为间隙锁 。索引上的等值查询(非唯一普通索引)&…

数据字典功能

我们在项目中会有很多的下拉框,这些下拉框都有一个特点,就是键值对的存在 实现方案: 直接硬编码写在html代码中, 缺点:新增修改需要修改代码为每个下拉框都设计一个表&#xff0c;然后提供CRUD功能 , 缺点 : 很多表,很多重复的CRUD代码使用数据字典的方式 ,使用字典类型表和字…

CTFHUB-web-SQL注入

整数型注入 字符型注入 得到数据库名 sqli http://challenge-f7a63a00793e62c6.sandbox.ctfhub.com:10800/?id-1 union select 1,database() 爆sqli数据库的数据表 爆flag表的所有列&#xff1a; http://challenge-f7a63a00793e62c6.sandbox.ctfhub.com:10800/?id-1 union s…

[Azkaban] No active executors found分析

启动AzkabanWebServer报如下错误: 点击进入 ActiveExecutors.setupExecutors发现调用的是 loadExecutors()继续深入 private ImmutableSet<Executor> loadExecutors() throws ExecutorManagerException {logger.info("Initializing executors from database.&q…

window 下 达梦数据库的备份和还原

DM 提供的各种工具进行备份还原与恢复的操作&#xff0c;包括 DIsql工具、DMRMAN 工具、图形化客户端管理工具 MANAGER 和 CONSOLE。 DIsql 工具用于执 行联机的数据备份与数据还原&#xff0c;包括数、归档备份据库备份、表空间备份与还原、表备份与 还原&#xff1b; DMRMA…

docker-compose安装nacos

文章目录一、安装nacos1.docker-compose.yml2.nacos数据库表结构3.docker-compose 构建运行4.检查nacos日志6.测试访问&#xff1a;TODO:二、nacos为注册中心&#xff1a;项目测试1.新建maven项目&#xff1a;2.配置pom.xml3.配置application.properties4.激活服务发现客户端5.…

117.Django-缓存redis

1. 概述 ​ 动态网站的基本权衡是&#xff0c;它们是动态的。每次用户请求页面时&#xff0c;Web服务器都会进行各种计算 - 从数据库查询到模板呈现再到业务逻辑 - 以创建站点访问者看到的页面。从处理开销的角度来看&#xff0c;这比标准的文件读取文件系统服务器要耗时多了。…

数据库、计算机网络,操作系统刷题笔记4

数据库、计算机网络&#xff0c;操作系统刷题笔记4 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&…

【POJ No. 1195】 矩形区域查询 Mobile phones

【POJ No. 1195】 矩形区域查询 Mobile phones 北大 OJ 题目地址 【题意】 移动电话的基站区域分为多个正方形单元&#xff0c;形成S S 矩阵&#xff0c;行和列的编号为0&#xff5e;S -1&#xff0c;每个单元都包含一个基站。一个单元内活动手机的数量可能发生变化&#xff…

[附源码]Python计算机毕业设计Django大学生考勤管理系统论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

区块链存储优化——从MPT树到KV存储

MPT树存储的优缺点 区块链如果采用MPT树存储&#xff0c;大概会有以下优点&#xff1a; 可用全局数据的根哈希做共识&#xff0c;数据篡改会被立即发现&#xff1b;可以查询任意历史区块对应时刻的所有数据&#xff1b;方便从指定区块开始同步数据&#xff0c;因为正如上面所…

Codeforces Round #790 (Div. 4) G. White-Black Balanced Subtrees 感觉很好的树形dp的板子题

翻译&#xff1a; 您得到一个有根的树&#xff0c;其中包含从1到&#x1d45b;编号为&#x1d45b;的顶点。根结点是顶点1。还有一个字符串&#x1d460;表示每个顶点的颜色:如果&#x1d460;&#x1d456;&#x1d671;&#xff0c;那么顶点&#x1d456;是黑色的&#xff0…