当前位置: 首页 > news >正文

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
在这里插入图片描述
(注意右上角:运行的是当前文件)
输出:
在这里插入图片描述
在其他文件中:
在这里插入图片描述
输出:
在这里插入图片描述
这时候就不会再输出测试语句了


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

相关文章:

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

📝前言: 这篇文章主要讲解一下python基础中的关于模块的导入: 1,模块的介绍 2,模块的导入方式 3,自定义模块 🎬个人简介:努力学习ing 📋个人专栏:C语言入门基…...

【HTML】标签学习(下.2)

(大家好哇,今天我们将继续来学习HTML(下.2)的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 二.列表标签 2.1 无序列表(重点) 2.2有序列表(理解) 2.3 自定义列表(重点…...

os模块篇(十一)

文章目录 os.chdir(path)os.chmod(path, mode, *, dir_fdNone, follow_symlinksTrue)os.chown(path, uid, gid, *, dir_fdNone, follow_symlinksTrue)os.getcwd()os.getcwdb()os.lchflags(path, flags)os.lchmod(path, mode)os.lchown(path, uid, gid) os.chdir(path) os.chdi…...

编译amd 的 amdgpu 编译器

1,下载源码 git clone --recursive https://github.com/ROCm/llvm-project.git 2, 配置cmake cmake -G "Unix Makefiles" ../llvm \ -DLLVM_ENABLE_PROJECTS"clang;clang-tools-extra;compiler-rt" \ -DLLVM_BUILD_EXAMPLESON …...

github 多个账号共享ssh key 的设置方法

确认本机是否已有ssh key 首先确认自己系统内有没有 ssh key。 bash复制代码cd ~/.ssh ls *.pub # 列出所有公钥文件id_rsa.pub若有,确认使用当前 key 或者生成新 key,若没有,生成新 key。由于我需要登录两个帐号,所以在已经存在…...

dm8修改sysdba用户的密码

1 查看达梦数据库版本 SQL> select * from v$version;LINEID BANNER ---------- --------------------------------- 1 DM Database Server 64 V8 2 DB Version: 0x7000c 3 03134283904-20220630-163817-200052 …...

基于boost准标准库的搜索引擎项目

零 项目背景/原理/技术栈 1.介绍boost准标准库 2.项目实现效果 3.搜索引擎宏观架构图 这是一个基于Web的搜索服务架构 客户端-服务器模型:采用了经典的客户端-服务器模型,用户通过客户端与服务器交互,有助于集中管理和分散计算。简单的用户…...

语言模型进化史(下)

由于篇幅原因,本文分为上下两篇,上篇主要讲解语言模型从朴素语言模型到基于神经网络的语言模型,下篇主要讲解现代大语言模型以及基于指令微调的LLM。文章来源是:https://www.numind.ai/blog/what-are-large-language-models 四、现…...

设计模式之旅:工厂模式全方位解析

简介 设计模式中与工厂模式相关的主要有三种,它们分别是: 简单工厂模式(Simple Factory):这不是GoF(四人帮,设计模式的开创者)定义的标准模式,但被广泛认为是工厂模式的…...

大数据时代的生物信息学:挖掘生命数据,揭示生命奥秘

在当今科技日新月异的时代,大数据如同一座蕴藏无尽宝藏的矿山,而生物信息学则是那把锐利的探矿锤,精准有力地敲击着这座“生命之矿”,揭示出隐藏在其深处的生命奥秘。随着基因测序技术的飞速进步与广泛应用,生物医学领…...

微信小程序开发【从入门到精通】——页面导航

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…...

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记15:PWM输出

系列文章目录 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装 嵌入式|蓝桥杯STM32G431(…...

SQLite中的隔离(八)

返回:SQLite—系列文章目录 上一篇:SQLite版本3中的文件锁定和并发(七) 下一篇:SQLite 查询优化器概述(九) 数据库的“isolation”属性确定何时对 一个操作的数据库对其他并发操作可见。 数据库连接之…...

Zabbix6 - Centos7部署Grafana可视化图形监控系统配置手册手册

Zabbix6 - Centos7部署Grafana可视化图形监控系统配置手册手册 概述: Grafana是一个开源的数据可视化和监控平台。其特点: 1)丰富的可视化显示插件,包括热图、折线图、饼图,表格等; 2)支持多数据…...

Electron无边框自定义窗口拖动

最近使用了electron框架,发现如果自定义拖动是比较实用的;特别是定制化比较高的项目,如果单纯的使用-webkit-app-region: drag;会让鼠标事件无法触发; 过程中发现问题: 1.windows缩放不是100%后设置偏移界面会缩放,感觉像吹起的气…...

vue3+echarts:echarts地图打点显示的样式

colorStops是打点的颜色和呼吸灯、label为show是打点是否显示数据、rich里cnNum是自定义的过滤模板用来改写显示数据的样式 series: [{type: "effectScatter",coordinateSystem: "geo",rippleEffect: {brushType: "stroke",},showEffectOn: &quo…...

vue3从精通到入门7:ref系列

Vue 3 的 Ref 是一个集合,包括多个与响应式引用相关的功能,这些功能共同构成了 Vue 3 响应式系统的重要组成部分。以下是更全面的介绍: 1.ref ref 接受一个内部值并返回一个响应式且可变的 ref 对象。这个对象具有一个 .value 属性&#xf…...

灵动翻译音频文件字幕提取及翻译;剪映视频添加字幕

参考:视频音频下载工具 https://tuberipper.com/21/save/mp3 1、灵动翻译音频文件字幕提取及翻译 灵动翻译可以直接chorme浏览器插件安装: 点击使用,可以上传音频文件 上传后自动翻译,然后点击译文即可翻译成中文,…...

在Gitee上创建新仓库

1. 登录到你的Gitee账户。 2. 在Gitee首页或仓库页面,点击“新建仓库”按钮。 3. 填写仓库名称、描述(可选)、选择仓库是否公开等信息。 4. 点击“创建仓库”按钮完成创建。 2. 本地代码连接到远程仓库 假设你已经在本地有一个项目&#…...

linux 配置NFS

1、NFS简介 NFS 是Network File System的缩写,即⽹络⽂件系统。NFS 的基本原则是“容许不同的客户 端及服务端通过⼀组RPC分享相同的⽂件系统”,它是独⽴于操作系统,容许不同硬件及操作 系统的系统共同进⾏⽂件的分享。 NFS在⽂件传送或信息…...

大疆御Pro(一代)更换晓spark摄像头评测

御Pro是17年的老机器,除了摄像头有点拉跨,续航、抗风、操作性在大疆民用系列里面算是数得上的。 机缘巧合,手头有几个御的空镜头(里面的芯片已经去掉了),还有几个晓的摄像头(只有芯片&#xff0…...

【小技巧】gitlab怎么在每次git push的时候不用输入账号密码?使用 SSH 密钥 的原理是什么?

1. gitlab怎么在每次git push的时候不用输入账号密码? 要在每次执行 git push 时避免输入 GitLab 的账号和密码,你可以通过以下几种方法实现: 使用 SSH 密钥:这是最常用的方法,通过生成 SSH 密钥并将其添加到 GitLab …...

笔记: JavaSE day15 笔记

第十五天课堂笔记 数组 可变长参数★★★ 方法 : 返回值类型 方法名(参数类型 参数名 , 参数类型 … 可变长参数名){}方法体 : 变长参数 相当于一个数组一个数组最多只能有一个可变长参数, 并放到列表的最后parameter : 方法参数 数组相关算法★★ 冒泡排序 由小到大: 从前…...

【Golang星辰图】数据处理的航海家:征服数据海洋的航行工具

数据处理的建筑师:用Go语言中构建稳固的数据分析建筑物 前言 数据处理和分析是现代计算机科学中的关键任务之一,而Go语言作为一门现代化的编程语言,也需要强大的数据处理和分析库来支持其在这一领域的应用。本文将介绍几款优秀的数据处理和…...

容器网络测试关键问题

资料问题 主要影响客户体验, 低级问题. 类似于单词拼写错误, 用词有歧义,等。 另一点是,我们的用户文档,主要偏向于技术向的描述,各种参数功能罗列。友商有比较好的最佳实践操作说明。我们后面也会都增加这样的最佳实践。golang o…...

6、Cocos Creator 2D 渲染组件:​Sprite 组件​

Sprite 组件 Sprite(精灵)是 2D/3D 游戏最常见的显示图像的方式,在节点上添加 Sprite 组件,就可以在场景中显示项目资源中的图片。 属性功能说明Type渲染模式,包括普通(Simple)、九宫格&#x…...

算法沉淀——动态规划篇(子数组系列问题(上))

算法沉淀——动态规划篇(子数组系列问题(上)) 前言一、最大子数组和二、环形子数组的最大和三、乘积最大子数组四、乘积为正数的最长子数组长度 前言 几乎所有的动态规划问题大致可分为以下5个步骤,后续所有问题分析都…...

通知中心架构:打造高效沟通平台,提升信息传递效率

随着信息技术的快速发展,通知中心架构作为一种关键的沟通工具,正逐渐成为各类应用和系统中必不可少的组成部分。本文将深入探讨通知中心架构的意义、设计原则以及在实际场景中的应用。 ### 什么是通知中心架构? 通知中心架构是指通过集中管…...

【Arduino使用SNR9816TTS模块教程】

【Arduino使用SNR9816TTS模块教程】 1.前言2. 硬件连接3. Arduino代码3.1 环境配置3.2 Arduino源码 4. 调试步骤5. 总结 1.前言 在今天的教程中,我们将详细介绍如何使用Arduino IDE开发ESP32C3与汕头新纳捷科技有限公司生产的SNR9816TTS中文人声语音合成模块进行交…...

牛客练习赛123(A,B,C,D)

牛客挑战赛,练习赛和小白月赛周赛不是一种东西。这玩意跟CF的div12差不多难度。而且找不到题解。所以决定不等题解补题了,直接写题解了。 比赛链接 光速签到下班,rk。感觉E可能能补掉,看情况补吧。 B题感觉之前考了两次&#x…...

做公司网站需要花钱吗/百度投放广告联系谁

01串 时间限制:1000 ms | 内存限制:65535 KB难度:2描述ACM的zyc在研究01串,他知道某一01串的长度,但他想知道不含有“11”子串的这种长度的01串共有多少个,他希望你能帮帮他。 注:01串的长度为…...

南京网站排名/友情链接交换软件

setTimeout 在 js 加载前的问题探究 思思放出一道题目&#xff0c;深究一下发觉很有意思<script>setTimeout(() > {alert(2);}, 0)</script> <script src"https://test.tms-uat.xuebangsoft.net/plugins/jquery-1.10.2.min.js"></script>…...

易名中国网站/seo基础入门免费教程

酷睿i5-9400F基于14nm制程工艺&#xff0c;原生6核6线程&#xff0c;默认主频2.9Ghz&#xff0c;最大睿频4.1Ghz&#xff0c;设计功耗65W&#xff0c;无内置核心显卡 组装电脑 选i7 8700还是i5 9400f这些点很重要!看完你就知道了https://diannao.jd.com/diannao.html? i7-670…...

wordpress文章禁止搜索/百度网盘电脑版官网

OpenFeign 概述 Feign是一个声明式的web服务客户端&#xff0c;让编写web服务客户端变得非常容易&#xff0c;只需创建一个接口并在接口上添加Feign的注解即可 为什么要使用OpenFeign 前面在使用Ribbon RestTemplate时&#xff0c;利用RestTemplate对http请求进行了封装处理&…...

做网站好的框架/国外seo网站

前不久为了部署Django项目&#xff0c;在百度上到处找教程&#xff0c;找到的教程因为这样那样的原因&#xff0c;总是失败&#xff0c;可能是因为作者水平比较高吧&#xff0c;有些细节的东西估计没写出来&#xff0c;造成我这种初学者想照着做都做不成。百度不行就用Google吧…...

wordpress 页脚改颜色/小程序开发收费价目表

cookie的实现很简单&#xff0c;在服务器返回的响应中&#xff0c;header里增加Set-Cookie&#xff0c;浏览器接受到Set-Cookie中的value&#xff0c;下次访问这个网站的请求中就会带上这个cookie。编写一个增加cookie的函数&#xff1a; def add_cookie(cookie):header HTTP…...