python基础——模块【模块的介绍,模块的导入,自定义模块,*和__all__,__name__和__main__】

📝前言:
这篇文章主要讲解一下python基础中的关于模块的导入:
1,模块的介绍
2,模块的导入方式
3,自定义模块

🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础以及python入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:路漫漫其修远兮,吾将上下而求索

文章目录

  • 一,模块的介绍
  • 二,模块的导入和使用
    • 1,直接导入模块(得到模块)
      • (1)导入
      • (2)使用
    • 2,从模块中导入功能(得到功能)
      • (1)导入
      • (2)使用
    • 3,设置别名
  • 三,自定义模块
    • 1,如何自定义模块
    • 2,同名功能的选择
    • 3,* 和__all__
    • 4,模块中的测试代码

一,模块的介绍

1,什么是模块
在 Python 中,模块是一种组织 Python 代码的方法。模块可以包含定义(例如类、函数和变量)和可执行代码。如果当我们要使用的功能在模块中时,我们就可以导入模块,使用模块中的相应功能。也就是说:模块可以帮助你将代码组织得更有逻辑,并允许你将代码划分为更小的、更可管理的部分。
例如,我们想实现一些与时间相关的功能,我们就可以直接导入python中现有的time模块,然后调用time模块的功能帮我们实现。

二,模块的导入和使用

模块的导入一般写在文件的开头(这一点和C语言中,要包含对应的头文件类似,要写在开头)
导入方式汇总:
在这里插入图片描述
下面我们介绍几种基本的导入方式:

1,直接导入模块(得到模块)

直接导入模块后,我们就可以用模块里面的全部功能

(1)导入

语法:

import 模块名
# 或者一次性导入多个:
import 模块名, 模块名

示例,导入time模块

import time  # 导入time模块

(2)使用

当我们只导入了模块,没有具体到功能名的时候,在使用时,我们需要通过模块来找功能
语法:

模块名.功能

示例(导入time模块,并且使用里面的sleep功能):

import time  # 导入time模块
time.sleep(10)  # 通过 . 操作符使用功能

sleep的作用就是:让程序暂停运行n

2,从模块中导入功能(得到功能)

(1)导入

语法:

from time import sleep # 导入time模块的sleep功能

示例:

from time import sleep # 导入time模块的sleep功能

(2)使用

这时候,我们已经得到了功能,就无须通过模块来找到功能了,示例:

from time import sleep  # 导入time模块的sleep功能
sleep(10)  # 直接使用功能

(注意:这时候我们只能使用sleep功能,而不能使用time模块里面的其他功能,因为我们只指定导入了这个功能)

3,设置别名

当然,正如本文的第一张图片,我们可以在导入以后,对模块或者是功能进行别名设置:

from time import sleep as al  # 导入time模块的sleep功能,给sleep设置别名:sl
al(10)  # 通过别名al来使用sleep功能

三,自定义模块

1,如何自定义模块

自定义模块其实就是创建一个以.py结尾的python文件,然后我们可以在这个文件里面写功能
(注意:自定义模块的命名要符合标识符的命名规则)
当我们需要调用这个文件里面的功能时,只需要导入这个模块就可以(模块名就是文件名)
例如,我们创建一个自定义模块:
在这里插入图片描述
使用它:

import test  # 导入我们的自定义模块
test.ptint1()  # 使用里面的功能

输出:
在这里插入图片描述

2,同名功能的选择

注意:当导入多个不同的模块,但模块内有同名功能,当调用这个同名功能时,调用的是后面导入的模块的功能
如:
我们在test1test2模块里面写入同名功能:
在这里插入图片描述
在这里插入图片描述
运行下面代码:

from test1 import my_ptint
from test2 import my_ptint
my_ptint()

输出:
在这里插入图片描述

3,* 和__all__

* 导入:
在Python中,使用 from module_name import * 表示导入模块中的所有内容。
这会导入模块中的所有变量、函数和类,我们可以在当前命名空间中直接使用它们。
(注意:这种方法可以快速地导入模块中的所有内容,但可能导致命名冲突,因此通常不推荐使用)
__all__:
__all__ 是模块中的一个特殊变量,它定义了模块中应该被导入的内容。
当使用 from module_name import * 时,只有 __all__ 指定的内容会被导入。(换句话说,__all__ 限制了 * 导入的行为)

示例:
在这里插入图片描述
在这里插入图片描述
这时候我们使用my_print3就会报错,因为__all__变量限制了*的导入

4,模块中的测试代码

假如我们在文件里面写好功能以后,想测试一下这些功能,如:
在这里插入图片描述
输出结果是正常的,并且我们不打算删除这些测试代码。
但是,当我们在别的文件里面,对刚刚的模块进行导包:

from test1 import my_print1
my_print1()

输出结果:
在这里插入图片描述
可见:在我们导包的时候,测试语句也被输出了
这是因为:
我们from 模块的时候,其实是相当于把模块文件执行了
若模块里面有测试代码,则在我们调用的时候,也会运行这些测试代码(就如上面输出的前三行)

为了解决这个问题我们可以使用__name__变量和__main__变量:

在Python中,__main__ 是一个特殊的模块,它主要用于执行模块中的main()函数。当你直接运行一个Python文件时,这个文件中的代码会进入__main__模块。换句话说,__main__模块是Python解释器直接运行的入口
在Python中,一个模块的__name__属性会自动设置为’__main__',如果你直接运行一个模块,你可以通过这个属性来判断当前的模块是否是__main__模块。
例如,下面的代码:

if __name__ == '__main__':print("这是一个直接运行的模块")

当我们运行这条代码所写在的文件的时候:__name__就会直接被设置成__main__
当我们运行别的文件的时候,__name__是不会被设置成__main__的

利用这个特性,我们就可以在这个条件判断语句内写入测试语句,从而达到:
在运行模块的时候,能够进入测试语句,
但是在别的文件中导入模块,运行别的文件的时候,测试语句就不会被运行

例如:
在测试文件test1
在这里插入图片描述
(注意右上角:运行的是当前文件)
输出:
在这里插入图片描述
在其他文件中:
在这里插入图片描述
输出:
在这里插入图片描述
这时候就不会再输出测试语句了


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

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

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

相关文章

大数据面试专题 -- kafka

1、什么是消息队列? 是一个用于存放数据的组件,用于系统之间或者是模块之间的消息传递。 2、消息队列的应用场景? 主要是用于模块之间的解耦合、异步处理、日志处理、流量削峰 3、什么是kafka? kafka是一种基于订阅发布模式的…

通过SSH在苹果手机上查看系统文件:远程访问iOS文件系统的方法

​ 目录 引言 用户登录工具和连接设备 查看设备信息,电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 电脑可对手机应用程序批量操作 运行APP和查看APP日志 IPA包安装测试 注意事项 引言 苹果手机与安卓手机不同,无法直接访问系统文件…

python基于django协同算法的个性化音乐推荐系统的设计与实现

本个性化音乐推荐系统以Django作为框架,b/s模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块:首页,个人中心,用户管理,歌曲类型管理,明星歌手管理,歌曲音乐管理,歌曲…

权限提升技术:攻防实战与技巧

本次活动赠书1本,包邮到家。参与方式:点赞收藏文章即可。获奖者将以私信方式告知。 网络安全已经成为当今社会非常重要的话题,尤其是近几年来,我们目睹了越来越多的网络攻击事件,例如公民个人信息泄露,企业…

【Jenkins】关于账号,证书验证的设置问题

当你的电脑启动了Jenkins,这时候一定要小心更改管理员账号和密码~~~ 当你的电脑启动了Jenkins,这时候一定要小心更改管理员账号和密码~~~ 当你的电脑启动了Jenkins,这时候一定要小心更改管理员账号和密码~~~ 重要的事情说3遍,如…

阿里云数据库服务器价格表查询_一张表精准报价

阿里云数据库服务器价格表,优惠99元一年起,ECS云服务器2核2G、3M固定带宽、40G ESSD Entry云盘,优惠价格99元一年;阿里云数据库MySQL版2核2G基础系列经济版99元1年、2核4GB 227.99元1年,云数据库PostgreSQL、SQL Serve…

财经界投稿发表论文知网收录

《财经界》是由国家新闻出版总署批准、国家发展计划委员会主管、国家信息中心主办的正规国家级经济类期刊。本刊为大型财经刊物,旨在介绍国家宏观经济政策、经济环境、经济信息和分析经济热点问题。杂志面向各级政府决策层、财经高管人员、研究机构的专家学者、资本…

ES学习日记(九)-------logstash导入数据

一、安装和下载 es官网下载地址 官方介绍:Logstash是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。(我们的存储库当然是 Elasticsearch。) 下载和ES一样的版本(很重要,必须这…

轻量应用服务器16核32G28M腾讯云租用优惠价格4224元15个月

腾讯云16核32G服务器租用价格4224元15个月,买一年送3个月,配置为:轻量16核32G28M、380GB SSD盘、6000GB月流量、28M带宽,腾讯云优惠活动 yunfuwuqiba.com/go/txy 活动链接打开如下图: 腾讯云16核32G服务器租用价格 腾讯…

Acwing.1388 游戏(区间DP对抗思想)

题目 玩家一和玩家二共同玩一个小游戏。 给定一个包含 N个正整数的序列。 由玩家一开始,双方交替行动。 每次行动可以在数列的两端之中任选一个数字将其取走,并给自己增加相应数字的分数。(双初始分都是 0分) 当所有数字都被…

VPN——GRE

1、VPN概念 Virtual Private Network ①虚拟专用网络 ②在公有的网络上架设私有的通道,构建一个专用的、安全性、服务质量得到保障的网络 ③实质:数据包的再封装与解封装的过程 2、分类 按照业务用途:【1】access:外出员工…

FIT-RAG:RAG架构是否正在趋向于标准化方法?

原文地址:fit-rag-are-rag-architectures-settling-on-a-standardised-approach 2024 年 4 月 2 日 随着RAG的使用,漏洞开始显现,这些问题的解决方案也开始变得越来越相似。 介绍 随着技术的不断发展,我们注意到一个有趣的现象&am…

rasa trian 报错解决---Project validation completed with errors.

rasa train 过程中:出现一下问题; Project validation completed with errors. 解决措施:python 3.10版本,rasa 3.6.19, 降低版本 pip3 install rasa3.5.17 -i https://pypi.tuna.tsinghua.edu.cn/simple成功解决

CS架构---Socket基础

目录 一、Socket简介1.1 通信模型1.2 类型1.3 创建和使用:1.4 地址族 二、客户/服务器模式2.1 服务器端(Server Side)2.2 客户端(Client Side)2.3 通信方式2.4 角色分工2.5 优点 三、Socket实战四、常见应用场景 一、S…

7个影响AEC的AI工具

人工智能(AI)工具在各个行业中越来越受欢迎,ChatGDP的推出无疑让人们看到了人工智能所能提供的可能性。 然而,人工智能不仅仅是生成文本或图形——它可以用于各种设置。 建筑行业也不例外,我们才刚刚开始发现人工智能…

探索----------------阿里云

目录 一、阿里云四大件 1、云服务器ECS 2、云数据库RDS 3、负载均衡SLB 4、对象存储OSS 5、其他的云计算产品 1)内容分发网络CDN 2)专有网络 VPC 二、linux发行版本 三、你平时对系统会怎么优化(五大负载) 1、cpu 使用率…

kettle使用MD5加密增量获取接口数据

kettle使用MD5加密增量获取接口数据 场景介绍: 使用JavaScript组件进行MD5加密得到Http header,调用API接口增量获取接口数据,使用json input组件解析数据入库 案例适用范围: MD5加密可参考、增量过程可参考、调用API接口获取…

五、postman基础使用案例

postman基础使用 相关案例【传递查询参数】【提交表单数据】【提交JSON数据】 注:postman⼀款⽀持调试和测试的⼯具,开发、测试⼯程师都可以使⽤。方法一般统一为:方法→请求头→请求体→断言 相关案例 【传递查询参数】 访问TPshop搜索商品的…

【项目实战经验】DataKit迁移MySQL到openGauss(上)

前言 本文将分享DataKit迁移MySQL到openGauss的项目实战,供广大openGauss爱好者参考。 1. 下载操作系统 https://www.openeuler.org/zh/download https://support.huawei.com/enterprise/zh/doc/EDOC1100332931/1a643956 https://support.huawei.com/enterprise…

力扣热门算法题 174. 地下城游戏,189. 轮转数组,198. 打家劫舍

174. 地下城游戏,189. 轮转数组,198. 打家劫舍,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.31 可通过leetcode所有测试用例。 目录 174. 地下城游戏 解题思路 完整代码 Python Java 189. 轮转数…