Python 模块的使用

本篇主要为python 模板介绍和使用,包含如何创建和使用自定义模块,引入模块的方式及包内容介绍。

概述

在项目开发中随着代码量越来越多,代码就会越来越难以维护。为了解决难以维护的问题,我们把很多相似功能的函数分组,分别放到不同的文件中去。这样每个文件所包含的内容相对较少,而且对于每个文件的大致功能可用文件名来体现。很多编程语言都是这么来组织代码结构。对于python:一个.py文件就是一个模块。

优点

提高代码的可维护性

提高了代码的复用性,同一个模块,可以被多个功能引用。

引用其他的模块(内置模块、三方模块和自定义模块)避免函数名和变量名的冲突

自定义模块

创建自定义模块

在当前目录下创建teacher.py,并创建了一个方法,打印一些字符串用于显示。

示例如下:

# 一个.py文件就是一个模块

name = 'teacher'

def say_common_in():
    print('进来,准备上课!')


def say_lecture():
    print('开始上课,这节课我们来讲一讲...')


def say_end():
    print('下课了,同学们再见!')

引入自定义模块

在同级目录中创建一个新的.py文件,用于引入模块和调用。

引入自定义模块,不用加.py后缀,下面以import引入方式为例。

示例如下:

import teacher

注意:一个模块只会被引入一次,不论添加了多少个import。

这是为了防止模块被多次引入。

使用模块中的内容

使用模块中的方法

格式:模块名.函数名()

示例如下:

teacher.say_common_in()
teacher.say_lecture()
teacher.say_end()

# 执行结果
# 进来,准备上课!
# 开始上课,这节课我们来讲一讲...
# 下课了,同学们再见!

使用模块中的变量

格式:模块名.变量名

示例如下:

print(teacher.name)

# 执行结果
# teacher

引入模块方式

import语句

格式:import module[, module2 [, module3[,......,modulen]]]

示例如下:

import teacher
import os, time, datetime

from...import语句

作用:从模块中导入一个指定的部分到当前命名空间

格式:from module import name[, name2[....,namen]]

示例如下:

from teacher import say_common_in

say_common_in()

# 执行结果
# 进来,准备上课!

注意
调用未引入的函数

没有引入say_end函数

示例如下:

say_end()
执行结果
Traceback (most recent call last):
  File "E:\lianxipy\day5\使用from...import.py", line 14, in <module>
    say_end()
NameError: name 'say_end' is not defined

设置同名函数

若在当前文件中定义函数与引入模块中函数同名则会覆盖掉。

示例如下:

from teacher import say_common_in


def say_common_in():
    print('这是一个新方法!')

say_common_in()

# 执行结果
# 这是一个新方法!

from...import *语句

from...import * 语句把一个模块中所有的内容全部导入当前的命名空间

示例如下:

from teacher import *

say_common_in()
say_lecture()
say_end()

# 执行结果
# 进来,准备上课!
# 开始上课,这节课我们来讲一讲...
# 下课了,同学们再见!

注意:最好不要过多使用。

__name__属性

模块就是一个可执行的.py文件,一个模块被另外一个程序引入。

如果不想模块中的某些代码执行,可以用__name__属性来使程序仅调用模块的一部分。

修改teacher

每个模块都有一个__name__属性,当其值等于“__main__”时,表名该模块自身在执行。

示例如下:

# 一个.py文件就是一个模块

name = 'teacher'


def say_common_in():
    print('进来,准备上课!')


def say_lecture():
    print('开始上课,这节课我们来讲一讲...')


def say_end():
    print('下课了,同学们再见!')


# 每个模块都有一个__name__属性,当其值等于“__main__”时,表名该模块自身在执行。
if __name__ == '__main__':
    print('自己执行')

执行teacher.py

执行结果

自己执行

在其他文件中调用是不会执行此打印。

为了解决模块名称的冲突,引入了按目录来组织模块的方法,称为包。

特点

引入了包以后,只要顶层的包不与其他包冲突,那么模块都不会与别的模块发生冲突。

创建包

选中当前目录后【右击】选择new中的【Python Package】选项,创建包。

如下图:

 创建后出现__init__.py文件

引入包中模块

包中的teacher.py是之前创建的,分别复制后放入a、b包中。然后引用包中的teacher模块。

示例如下:

import a.teacher
import b.teacher

使用模块方法

分别调用a、b包中的teacher的say_common_in()方法,也不会产生冲突。

因为它们现在分别属于不同的命名空间中,是相互独立,互不干涉的。

示例如下:

# 调用a包中teacher模块的函数
a.teacher.say_common_in()

# 调用b包中teacher模块中的函数
b.teacher.say_common_in()

# 执行结果
# 进来,准备上课!
# 进来,准备上课!

注意

目录只有包含一个“__init__.py”的文件才会被认作是一个包,

主要是为了避免一些滥竽充数的名字,

暂时这个文件中不需要写东西。

总结

本篇主要为python 模板介绍和使用,包含如何创建和使用自定义模块,引入模块的方式及包内容介绍。

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

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

相关文章

bugku--Simple_SSTI_1---2

第一题 看到一句话&#xff0c;需要传入一个传参为flag 设置一个变量为 secret_key 构造paykoad /?flagsecret_key 但是发现什么都没有 SSTI模版注入嘛 这里使用的是flask模版 Flask提供了一个名为config的全局对象&#xff0c;可以用来设置和获取全局变量。 继续构造pa…

Angular+Nginx区域HIS医院信息管理系统源码

医院管理信息系统&#xff08;HIS&#xff09;是医院基本、重要的管理系统&#xff0c;是医院大数据的基础。“云”指系统采用云计算的技术和建设模式&#xff0c;具有可扩展、易共享、区域化、易协同、低成本、易维护、体验好的优势。“H”是医疗卫生&#xff0c;由原来医院 (…

1846_安全SPI

Grey 全部学习内容汇总&#xff1a;GitHub - GreyZhang/g_embedded: some embedded basic knowledge. 1846_安全SPI SPI是一种常见的通信方式&#xff0c;在汽车电子中比较常用。但是如果涉及到安全相关的设计&#xff0c;可能得考虑更多。而SPI协议本身没有很好的标准化&am…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑场间功率时移的海上风电场群联合储能优化调度方法》

这个标题涉及到海上风电场群&#xff08;Offshore Wind Farm Cluster&#xff09;的联合储能优化调度方法&#xff0c;并强调了对场间功率时移的考虑。以下是对标题各部分的解读&#xff1a; 海上风电场群&#xff1a; 指的是多个相邻或连接的海上风电场的集合体。通常&#xf…

销售技巧培训之如何提升网络销售技巧

销售技巧培训之如何提升网络销售技巧 随着互联网的普及&#xff0c;网络销售已经成为了一种重要的销售方式。对于许多企业来说&#xff0c;网络销售已经成为了一种重要的销售渠道。但是&#xff0c;要想在网络销售中取得成功&#xff0c;就需要掌握一些网络销售技巧。本文将介…

微信小程序ios中非cover组件点击重复触发地图tap事件

现象&#xff1a; map中使用view组件的click事件会重复触发地图的tap组件&#xff0c;只在ios上出现 <map id"maps" style"width: 100vw;height: 100vh;" :latitude"latitude" :longitude"longitude":markers"markers"…

关于put_response和get_response的总结

Response总结&#xff0c;共三种情况 &#xff08;1&#xff09;每一笔都等response -> 直接get_response 注意put_response的前提是当前的seq的body没有直接结束&#xff0c;这个body一定是最底层发req的那个seq的body &#xff08;2&#xff09;连续发送数据&#xff0…

Java8新特性:Lambda表达式

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

Python: isinstance()判断当前对象类型

介绍 isinstance()是Python中的一个内置函数&#xff0c;用于检查一个对象是否是特定类的实例&#xff0c;或者是否继承自某个类。 isinstance()函数的语法如下&#xff1a; isinstance(object, classinfo) 其中&#xff1a; object&#xff1a;要检查的对象。classinfo&am…

实战章节:在Linux上部署各类软件

详细资料见文章的资源绑定 一、前言 1.1 为什么学习各类软件在Linux上的部署 在前面&#xff0c;我们学习了许多的Linux命令和高级技巧&#xff0c;这些知识点比较零散&#xff0c;同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用&#xff0c;但是并没…

【项目日记(二)】开胃菜--定长池的实现

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日记…

对于双显卡电脑,如何分辨现在用的是独立显卡还是集成显卡?

一、问题描述 台式电脑本身自带了集成显卡&#xff0c;然后又购买了一块NVIDIA的独立显卡。 现在&#xff0c;就有疑问了&#xff0c;如何判断你的显示器连接的是独立显卡还是集成显卡呢&#xff1f; 二、NVIDIA双显卡机型 1、在桌面右下角&#xff0c;选择NVIDIA图标&…

HarmonyOS创建属性动画

属性动画的使用 1 概述 属性动画&#xff0c;是最为基础的动画&#xff0c;其功能强大、使用场景多&#xff0c;应用范围较广。常用于如下场景中&#xff1a; 一、页面布局发生变化。例如添加、删除部分组件元素。二、页面元素的可见性和位置发生变化。例如显示或者隐藏部分…

华为战略管理的核心工具与方法论:五看三定之“五看”怎么看

昨天&#xff0c;华研荟介绍了华为战略管理的一些基本概念和做法&#xff0c;今天就来为大家分享“五看三定”这个具体的方法。 首先来看一下什么叫做“五看三定”。 从名字我们可以看到&#xff0c;五看三定是一个缩略词&#xff0c;为了方便记忆。说的是在战略管理中的一些做…

公司销售技巧培训方案

公司销售技巧培训方案 一、引言 随着市场竞争的日益激烈&#xff0c;销售技巧对于公司的发展至关重要。为了提高销售人员的技能水平&#xff0c;提高销售业绩&#xff0c;本文将介绍一份公司销售技巧培训方案。该方案结合实际案例&#xff0c;通过系统性的培训&#xff0c;帮…

关于空间BN

批次归一化对每个神经元都进行了归一化&#xff0c;或者说对每个特征都进行了归一化&#xff0c;并且用可学习的参数和进行重构。 那么如果卷积神经网络有3个通道&#xff0c;长和宽都是244&#xff0c;BN将需要学习3*244*244*2个参数&#xff0c;计算量是不是太大了&#xff1…

UniGui使用CSS移动端按钮标题垂直

unigui移动端中按钮拉窄以后&#xff0c;标题无法垂直居中&#xff0c;是因为标题有一个padding属性&#xff0c;在四周撑开一段距离。会变成这样&#xff1a; 解决方法&#xff0c;用css修改padding&#xff0c;具体做法如下 首先给button的cls创建一个cls,例如 然后添加css&…

在IDEA中配置Git的Push键

前言 笔者在重新安装IDEA过程中需要重新绑定了Git&#xff0c;发现提交代码过程中push键消失了&#xff0c;所以笔者就以这篇文章记录一下Git配置push键的详细过程。 注意笔者当前IDEA版本为2019&#xff0c;可能和读者有所区别&#xff0c;但是操作思路是差不多的。 操作步…

【Axure RP9】元件应用(图文并茂)----含登入,个人简历案例

目录 : 一&#xff0c;元件基本介绍 1.1 元件概述 1.2 元件操作 1.3 快捷键大全 二&#xff0c;基本元件的应用 2.1 形状 2.2 图片 2.3 文本 2.4 线段原件 2.5 热区 2.5.1 热区应用 三, 表单型元件的应用 3.1 文本框 3.2 文本域 3.3 下拉列表 3.4 列表框 3.5 …

Profibus、Profinet、Ethernet的详细对比

PROFINET 是一种新的以太网通讯系统&#xff0c;是由西门子公司和 Profibus 用户协会开发。 PROFINET 具有多制造商产品之间的通讯能力&#xff0c;自动化和工程模式&#xff0c;并针对分布式智能自动化系统进行了优化。其应用结果能够大大节省配置和调试费用。 PROFINET 系统集…