Python 模块

目录

1.模块导入语言 

1.1 import 语句 

 1.2 from…import 语句​编辑

 2. 搜索路径

3.命名空间和作用域 

4.globals() 和 locals() 函数 

5.reload() 函数 

6.Python中的包 

 7.自定义模块及其调用

7.1 创建模块及__init__.py初始化文件

7.2 __init__.py的参数__all__

7.3 调用模块时使用相对路径或绝对路径的问题


该学习笔记以菜鸟教程为骨架展开。 

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块让你能够有逻辑地组织你的 Python 代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。

模块能定义函数,类和变量,模块里也能包含可执行的代码。

1.模块导入语言 

1.1 import 语句 

 1.2 from…import 语句

 2. 搜索路径

3.命名空间和作用域 

        变量是拥有匹配对象的名字(标识符)。命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典。

        一个 Python 表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。每个函数都有自己的命名空间。类的方法的作用域规则和通常函数的一样。

        Python 会智能地猜测一个变量是局部的还是全局的,它假设任何在函数内赋值的变量都是局部的。因此,如果要给函数内的全局变量赋值,必须使用 global 语句。

global VarName 的表达式会告诉 Python, VarName 是一个全局变量,这样 Python 就不会在局部命名空间里寻找这个变量了。

例如,我们在全局命名空间里定义一个变量 Money。我们再在函数内给变量 Money 赋值,然后 Python 会假定 Money 是一个局部变量。然而,我们并没有在访问前声明一个局部变量 Money,结果就是会出现一个 UnboundLocalError 的错误。取消 global 语句前的注释符就能解决这个问题。

4.globals() 和 locals() 函数 

 

5.reload() 函数 

6.Python中的包 

包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。

考虑一个在 package_runoob 目录下的 runoob1.py、runoob2.py、__init__.py 文件,test.py 为测试调用包的代码,目录结构如下:

 

 7.自定义模块及其调用

7.1 创建模块及__init__.py初始化文件

在上一节中,菜鸟教程简单地告诉我们“模块,其实就是一个存在 __init__.py 文件的文件夹”,所以我们要定义一个模块,首先就是新建一个文件夹,然后再创建一个__init__.py文件。

提示:__init__.py文件是两个_下划线 

__init__.py文件的作用: 

当我们想要调用某个文件夹中的某个.py文件中的某个函数或类时,就需要__init__.py文件来告诉解释器,这文件夹是一个模块。如果没有添加,将无法导入这个模块(甚至不是一个模块)就会报错。创建了这个文件后,当导入这个文件夹中的模块时,都会先导入__init__.py中的内容及库。__init__.py文件也可以保持为空,这并不影响导入模块。

        也就是说,如果你仅仅只是编写一个python程序,那么这个__init__.py可有可无,但是你要是想写一个包想写一个模块,想让这个包在别的程序中可以调用,那么这个文件一定要有,里面可以空着什么都不写,但是一定要有。

7.2 __init__.py的参数__all__

__all__参数的作用是,当我们使用 from AAA import * 导入模块时,按正常的逻辑是可以导入AAA模块中的所有.py文件,但如果在__init__.py文件写入如下:(假设AAA文件夹下有一个Hello.py文件)

__all__=["Hello"]
# Hello 代表同文件夹中的Hello.py文件

那么我们在使用 from AAA import * 调用AAA文件夹(这个模块) 时,导入的就是除了Hello.py以外的所有.py文件。

        所以说,__init__.py文件中的__all__参数可以指定用户导入所有模块时,可以导入那些模块,不可以导入那些模块。

7.3 调用模块时使用相对路径或绝对路径的问题

相对路径与绝对路径问题看这篇文章 。

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【vite+vue3.2 项目性能优化实战】打包体积分析插件rollup-plugin-visualizer视图分析

rollup-plugin-visualizer是一个用于Rollup构建工具的插件,它可以生成可视化的构建报告,帮助开发者更好地了解构建过程中的文件大小、依赖关系等信息。 使用rollup-plugin-visualizer插件,可以在构建完成后生成一个交互式的HTML报告&#xf…

从血缘进化论的角度,破解婆媳关系的世纪难题

从血缘进化论的角度,破解婆媳关系的世纪难题 有个粉丝的留言,很长很复杂,是关于他们家的婆媳关系问题。 青木老师,您好,我也有一些问题想咨询您,是关于婆媳关系的,字数有些多,分开…

【ElasticSearch】EQL操作相关

文章目录 EQL操作基础语法数据准备数据窗口搜索统计符合条件的事件事件序列 安全检测数据准备查看数据导入情况获取 regsvr32 事件的计数检查命令行参数检查恶意脚本加载检查攻击成功可能性 EQL操作 EQL 的全名是 Event Query Language (EQL)。事件查询语言(EQL&…

【问题记录】flask开发blog

文章目录 小知识点问题1. 文章标签显示错误2. 文章状态无法回显(open)3. 用户管理页面,图标无法显示4. BuildError5. 用户管理添加用户,使用重复的用户名会报错(open)6. 添加用户,不上传头像会报错(open)7. 部分标签删除时报错&am…

JAVA springboot创业实践学分管理系统idea开发mysql数据库web结构计算机java编程MVC

一、源码特点 idea springboot创业实践学分管理系统是一套完善的web设计系统mysql数据库MVC模式开发,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式 开发。 JAVA springboot创业实践学分管理系统ide…

Ubuntu搜狗输入法安装指南

Ubuntu搜狗输入法安装指南 Ubuntu搜狗输入法安装指南搜狗输入法已支持Ubuntu1604、1804、1910、2004、2010Ubuntu20.04及以上安装搜狗输入法步骤 Ubuntu搜狗输入法安装指南 下载地址:https://shurufa.sogou.com/ 计算为amd64的选择x86_64,以下教程来源…

2023Java商城毕业设计(附源码和数据库文件下载链接)Spring Boot + mysql + maven + mybatis-plus

2023Java商城毕业设计Spring Boot mysql maven mybatis-plus 用户注册用户登录修改密码商品列表(分类模糊查询)个人信息用户信息修改订单信息添加至购物车商品列表商铺详情商品详情商铺列表 资源目录如下:(源码sql文件&#xf…

Linux入门2(常用命令)

Linux入门2 Linux常用命令快捷键基础命令文件查看命令文件编辑命令进程管理命令用户管理命令 Linux常用命令 快捷键 Ctrl Alt T打开终端 Ctrl shift 加号 终端字体放大 ctrl 减号 终端字体缩小 基础命令 sudo su 进入管理员目录 exit 返回到用户目录 ls 当前目录下的文…

Illustrator如何使用基础功能?

文章目录 0.引言1.菜单栏2.工具箱 0.引言 因科研等多场景需要进行绘图处理,笔者对Illustrator进行了学习,本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结,本文对软件界面基本功能进行阐述。    1…

K8s 安全是云安全的未来

导语 到 2025 年,保护 Kubernetes (K8s) 将被认为是云安全最重要的方面。 在最成功的组织中,CTO 和 CISO 已经意识到 Kubernetes 安全的重要性。 但是,虽然 Kubernetes 已经占 CTO 云支出的很大一部分,但 CISO 仍然有所落后。 大…

Android Studio开发图书管理系统APP

Android Studio开发项目图书管理系统项目视频展示: 点击进入图书管理系统项目视频 引 言 现在是一个信息高度发达的时代,伴随着科技的进步,文化的汲取,人们对于图书信息的了解与掌握也达到了一定的高度。尤其是学生对于知识的渴…

asp.net基于web的学生选课成绩管理系统86程序

系统使用Visual studio.net2010作为系统开发环境,并采用ASP.NET技术,使用C#语言,以SQL Server为后台数据库。 本系统主要包含了“登录模块”、“系统用户管理模块”、“课程信息管理模块”、“教师信息管理模块”、“班级信息管理模块”、“…

Lattics ——一款简单易用、好看强大的知识管理工具

如何选择一款适合自己的知识管理工具? 对于很多用户而言,在追求效率的路上,经常需要一款适合自己的知识管理工具。然而,随着工具市场的发展,各种新兴工具层出不穷。在传统领域,有印象笔记、Onenote 为代表…

【笔试强训选择题】Day7.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

如何充分利用实时聊天系统?

随着商业和电子商务领域经历快速的数字革命,必须迅速适应的一个因素是我们与客户的互动方式。几年前,电子邮件和电话还是主要的客户联系方式。如今,客户期望更好的服务和更即时的沟通。实时聊天支持系统可以解决此问题,如SaleSmar…

IntelliNode:Node.js大模型访问统一接口库【Gen AI】

使用最新的 AI 模型更新你的应用程序可能具有挑战性,因为它涉及了解不同 AI 模型的复杂性并管理许多依赖项。 IntelliNode 是一个开源库,旨在通过提供统一且易于使用的界面来解决集成 AI 模型的挑战。 这使开发人员能够快速构建 AI 原型并使用高级 AI 功…

CompletableFuture

线程基础知识复习 大神:Doug Lea java.util.concurrent java.util.concurrent.aomic Java.util.concurrent.locks 硬件 摩尔定律: 它是由英特尔创始人之一 Gordon Moore(戈登摩尔)提出来的。其内容: 当价格不变是,集成电路…

python相对路径与绝对路径

9.1 Python 绝对路径与相对路径 - 知乎 (zhihu.com) 目录 1. 绝对路径 1.1 概念 1.2 用绝对路径打开文件 1.2 相对路径 1.3 python路径表示的斜杠问题 1. 绝对路径 1.1 概念 绝对路径 指完整的描述文件位置的路径。绝对路径就是文件或文件夹在硬盘上的完整路径。 在 Win…

Java 基础入门篇(二)—— Java 基础语法

文章目录 一、注释二、字面量三、变量3.1 变量概述3.2 变量在计算机中的底层原理 四、数据类型五、关键字、标志符六、类型转换6.1 自动类型转换6.2 表达式的自动类型转换6.3 强制类型转换 七、运算符7.1 基本算数运算符7.2 符号做连接符7.3 自增自减运算符7.4 赋值运算符7.5 …

基于simulink采用 QSHB 和 HBPS 算法的混合 MIMO 波束成形仿真

一、前言 本例展示了多输入多输出 (MIMO) 无线通信系统的 Simulink 模型。无线系统使用混合波束成形技术来提高系统吞吐量。 二、介绍 5G和其他现代无线通信系统广泛使用MIMO波束成形技术进行信噪比(SNR)增强和空间复用&#xff0…