Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Python】模块导入 ⑤ ( 主程序判断语句 | 模块中执行函数问题 | 制作自定义模块并执行函数 | 导入自定义模块会执行模块中的代码 )

【Python】模块导入 ⑤ ( 主程序判断语句 | 模块中执行函数问题 | 制作自定义模块并执行函数 | 导入自定义模块会执行模块中的代码 )

作者头像
韩曙亮
发布于 2023-10-11 11:10:28
发布于 2023-10-11 11:10:28
34900
代码可运行
举报
运行总次数:0
代码可运行

一、模块中执行函数问题

1、制作自定义模块并执行函数

如果在自定义模块中 , 定义了函数 , 并且调用了该函数 ;

如下代码所示 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def add(a, b):
    print("调用 my_module 模块中的功能")
    return a + b


print(add(3, 4))

执行 my_module 模块 , 结果如下 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/my_module.py
调用 my_module 模块中的功能
7

Process finished with exit code 0

2、导入自定义模块会执行模块中的代码

在主代码中 , 导入自定义模块 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""
自定义模块 代码示例
"""

# 导入自定义模块
import my_module

执行上述代码 , 结果如下 , 没有调用 my_module 模块中的函数 , 但是该函数还是触发了 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
调用 my_module 模块中的功能
7

Process finished with exit code 0

这是因为 import 导入模块 , 将模块中的所有代码一次性拷贝到了该代码位置 , 执行该代码 , 即执行了 my_module 中的所有代码 ;

3、主程序判断语句

Python 中 提供了 主程序判断语句 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if __name__ == '__main__':

其作用是 判断当前模块 是否作为独立的主程序运行 ;

一个模块可以被其他模块导入 , 也可以作为独立的主程序运行 ;

当一个模块被导入时 , Python 会将模块的代码执行一遍 , 但是主程序的入口会被设置为导入该模块的模块的代码 ;

而当一个模块作为独立的主程序运行时 , Python 会直接执行该模块的代码 ;

为了区分这两种情况 , Python 引入了一个 特殊变量 __name__ , 该变量会根据当前模块的运行方式不同而有所不同 ;

  • 当一个模块被导入时 , __name__ 的值为该模块的名称 , 此时 if __name__ == '__main__' 不成立 ;
  • 当一个模块作为独立的主程序运行时 , __name__ 的值为 __main__ , 此时 if __name__ == '__main__' 成立 ;

4、代码示例 - 主程序判断语句

将 模块 中的 可执行代码 , 放在 if __name__ == '__main__': 代码块中 ,

只有当 右键 点击 " Run " 选项时 , __name__ 的值才为 __main__ , 该代码块才会被触发执行 ;

此时再次执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""
自定义模块 代码示例
"""

# 导入自定义模块
import my_module

主代码 , 执行结果为 , 没有触发模块中的可执行代码执行 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py

Process finished with exit code 0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Python】多线程编程 ② ( 进程与线程 | 进程的内存空间 | 并行执行概念 | 线程的创建和执行 | threading.Thread() 函数解析 )
在 操作系统 中 , 进程 之间 的 内存空间 是 隔离的 , 不同的进程 拥有各自的 内存空间 ,
韩曙亮
2023/10/11
2920
【Python】多线程编程 ② ( 进程与线程 | 进程的内存空间 | 并行执行概念 | 线程的创建和执行 | threading.Thread() 函数解析 )
【Python】面向对象 ④ ( 魔术方法 - 类内置方法 | `__str__` 字符串魔术方法 | 小于符号比较魔术方法 | 实现 `__lt__` 小于符号比较方法后也可以进行大于比较 )
之前的博客中 , 介绍了 类中的 __init__() 类内置构造方法 , 此外还有其它的类 内置方法 , 这些内置方法都有特殊的功能 ;
韩曙亮
2023/10/11
2760
【Python】面向对象 ④ ( 魔术方法 - 类内置方法 | `__str__` 字符串魔术方法 | 小于符号比较魔术方法 | 实现 `__lt__` 小于符号比较方法后也可以进行大于比较 )
【Python】PySpark 数据计算 ③ ( RDD#reduceByKey 函数概念 | RDD#reduceByKey 方法工作流程 | RDD#reduceByKey 语法 | 代码示例 )
RDD#reduceByKey 方法 是 PySpark 中 提供的计算方法 ,
韩曙亮
2023/10/11
9320
【Python】PySpark 数据计算 ③ ( RDD#reduceByKey 函数概念 | RDD#reduceByKey 方法工作流程 | RDD#reduceByKey 语法 | 代码示例 )
【Python】模块导入 ⑥ ( `__all__` 变量简介 | `__all__` 变量用法 | import 导入整个模块 - 执行阶段报错 | from 导入整个模块 - 编译阶段报错 )
Python 语言中的 __all__ 变量 是一个 列表 数据容器 , 用于控制 本应用 导入的 模块 中 可以使用 导入模块 的哪些 变量 / 函数 / 类 ;
韩曙亮
2023/10/11
5310
【Python】模块导入 ⑥ ( `__all__` 变量简介 | `__all__` 变量用法 | import 导入整个模块 - 执行阶段报错 | from 导入整个模块 - 编译阶段报错 )
【Python】异常处理 ⑤ ( 异常传递 | 异常处理顺序 | 代码示例 )
在 Python 中 , 异常是具有传递性的 , 该特性是 Python 中的一个重要特性 , 它使得代码更加健壮和可靠 ;
韩曙亮
2023/10/11
4890
【Python】异常处理 ⑤ ( 异常传递 | 异常处理顺序 | 代码示例 )
【Python】模块导入 ④ ( 自定义模块 | 制作自定义模块 | 使用 import / from 导入并使用自定义模块中的函数 | 导入自定义模块功能名称冲突问题 )
在另外的文件中 , 导入 my_module 模块 , 然后通过 my_module.add 调用 my_module 模块中的 add 函数 ;
韩曙亮
2023/10/11
9520
【Python】模块导入 ④ ( 自定义模块 | 制作自定义模块 | 使用 import / from 导入并使用自定义模块中的函数 | 导入自定义模块功能名称冲突问题 )
【Python】文件操作 ② ( 文件操作 | 读取文件 | read 函数 | readline 函数 | readlines 函数 )
文件打开后 , 可以获得一个 _io.TextIOWrapper 类型的文件对象 ;
韩曙亮
2023/10/11
3020
【Python】文件操作 ② ( 文件操作 | 读取文件 | read 函数 | readline 函数 | readlines 函数 )
【Python】函数进阶 ④ ( Lambda 匿名函数 | 具名函数与匿名函数 | Lambda 函数定义语法 )
在 Python 中 , 使用 def 关键字定义的函数 是 " 具名函数 " , 也就是有名字的函数 ;
韩曙亮
2023/10/11
3820
【Python】函数进阶 ④ ( Lambda 匿名函数 | 具名函数与匿名函数 | Lambda 函数定义语法 )
【Python】面向对象 - 继承 ② ( pass 关键字用法 | 多继承优先级 )
下面的代码中 , 定义一个 Dog 类 , 只是单纯的继承 Animal 和 Walk 两个类 , 但是如果不写类内容 , 编译时报错 :
韩曙亮
2023/10/11
3110
【Python】面向对象 - 继承 ② ( pass 关键字用法 | 多继承优先级 )
【Python】字符串 str ① ( 字符串 - 数据容器 | 字符串定义 | 使用下标索引访问字符串 | 字符串不可修改 )
字符串定义 就是 在 双引号 中 写入任意数量的 字符 , 如 : “Hello” ;
韩曙亮
2023/10/11
2690
【Python】字符串 str ① ( 字符串 - 数据容器 | 字符串定义 | 使用下标索引访问字符串 | 字符串不可修改 )
【Python】面向对象 - 继承 ① ( 继承概念 | 继承语法 | 单继承与多继承 | 代码示例 )
继承 属性 和 方法 的类被称为 " 子类 " , 被 继承 的类 称为 " 父类 " 或 " 基类 " ;
韩曙亮
2023/10/11
2020
【Python】面向对象 - 继承 ① ( 继承概念 | 继承语法 | 单继承与多继承 | 代码示例 )
【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )
元组 数据容器类型 的 详细 类型注解 , 需要为每个元素都进行类型标记 , 有几个元素就要标记几个类型 ;
韩曙亮
2023/10/11
5980
【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )
【Python】PySpark 数据计算 ⑤ ( RDD#sortBy方法 - 排序 RDD 中的元素 )
RDD#sortBy 方法 用于 按照 指定的 键 对 RDD 中的元素进行排序 , 该方法 接受一个 函数 作为 参数 , 该函数从 RDD 中的每个元素提取 排序键 ;
韩曙亮
2023/10/11
6230
【Python】PySpark 数据计算 ⑤ ( RDD#sortBy方法 - 排序 RDD 中的元素 )
【Python】面向对象 ② ( 类的定义和使用 | 类的成员方法 | 类成员方法定义语法 | self 关键字 )
类的成员方法 , 就是 在 类 中定义的 函数 , 在该 函数 中 , 可以调用 类的成员变量 , 以及 本类中其它的成员方法 ;
韩曙亮
2023/10/11
5140
【Python】面向对象 ② ( 类的定义和使用 | 类的成员方法 | 类成员方法定义语法 | self 关键字 )
[Python]自定义包及3种包导入方式
原文链接:https://blog.csdn.net/humanking7/article/details/88368950
祥知道
2020/03/10
3.1K0
【Python】json 格式转换 ① ( json 模块使用 | 列表转 json | json 转列表 | 字典转 json | json 转字典 )
然后 , 准备 python 数据 , 将数据放到 list 列表中 , 列表中的元素是 dict 字典 ;
韩曙亮
2023/10/11
9750
【Python】json 格式转换 ① ( json 模块使用 | 列表转 json | json 转列表 | 字典转 json | json 转字典 )
【Python】文件操作 ③ ( 文件操作 | 使用 for 循环读取文件 | 使用 close 函数关闭文件 | with open 语法自动处理文件关闭 )
使用 for 循环可以读取文件 , 每次循环将文件的一行数据赋值给临时变量 , 语法格式如下 :
韩曙亮
2023/10/11
4270
【Python】文件操作 ③ ( 文件操作 | 使用 for 循环读取文件 | 使用 close 函数关闭文件 | with open 语法自动处理文件关闭 )
【Python】类型注解 ④ ( 函数类型注解 | 函数形参类型注解语法 | 函数返回值类型注解 )
由于定义 函数 时 , 没有为 函数形参 设置 类型注解 , 编写函数时 , PyCharm 工具无法提示没有类型的形参 :
韩曙亮
2023/10/11
4600
【Python】类型注解 ④ ( 函数类型注解 | 函数形参类型注解语法 | 函数返回值类型注解 )
【Python】Python 包 ② ( 自定义 Python 包 | 导入并调用自定义 Python 包 | `__init__.py` 定义 `__all__` 变量 )
右键点击 PyCharm 中的 Python 工程根目录 , 选择 " New / Python Package " 选项 ,
韩曙亮
2023/10/11
5660
【Python】Python 包 ② ( 自定义 Python 包 | 导入并调用自定义 Python 包 | `__init__.py` 定义 `__all__` 变量 )
【Python】面向对象 ③ ( 构造函数 | 成员变量赋值问题 | 构造方法引入 | 构造函数可以同时定义成员变量 )
如果要为其成员变量赋值 , 需要分别为 name 和 age 两个成员变量赋值 ,
韩曙亮
2023/10/11
4320
【Python】面向对象 ③ ( 构造函数 | 成员变量赋值问题 | 构造方法引入 | 构造函数可以同时定义成员变量 )
推荐阅读
【Python】多线程编程 ② ( 进程与线程 | 进程的内存空间 | 并行执行概念 | 线程的创建和执行 | threading.Thread() 函数解析 )
2920
【Python】面向对象 ④ ( 魔术方法 - 类内置方法 | `__str__` 字符串魔术方法 | 小于符号比较魔术方法 | 实现 `__lt__` 小于符号比较方法后也可以进行大于比较 )
2760
【Python】PySpark 数据计算 ③ ( RDD#reduceByKey 函数概念 | RDD#reduceByKey 方法工作流程 | RDD#reduceByKey 语法 | 代码示例 )
9320
【Python】模块导入 ⑥ ( `__all__` 变量简介 | `__all__` 变量用法 | import 导入整个模块 - 执行阶段报错 | from 导入整个模块 - 编译阶段报错 )
5310
【Python】异常处理 ⑤ ( 异常传递 | 异常处理顺序 | 代码示例 )
4890
【Python】模块导入 ④ ( 自定义模块 | 制作自定义模块 | 使用 import / from 导入并使用自定义模块中的函数 | 导入自定义模块功能名称冲突问题 )
9520
【Python】文件操作 ② ( 文件操作 | 读取文件 | read 函数 | readline 函数 | readlines 函数 )
3020
【Python】函数进阶 ④ ( Lambda 匿名函数 | 具名函数与匿名函数 | Lambda 函数定义语法 )
3820
【Python】面向对象 - 继承 ② ( pass 关键字用法 | 多继承优先级 )
3110
【Python】字符串 str ① ( 字符串 - 数据容器 | 字符串定义 | 使用下标索引访问字符串 | 字符串不可修改 )
2690
【Python】面向对象 - 继承 ① ( 继承概念 | 继承语法 | 单继承与多继承 | 代码示例 )
2020
【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )
5980
【Python】PySpark 数据计算 ⑤ ( RDD#sortBy方法 - 排序 RDD 中的元素 )
6230
【Python】面向对象 ② ( 类的定义和使用 | 类的成员方法 | 类成员方法定义语法 | self 关键字 )
5140
[Python]自定义包及3种包导入方式
3.1K0
【Python】json 格式转换 ① ( json 模块使用 | 列表转 json | json 转列表 | 字典转 json | json 转字典 )
9750
【Python】文件操作 ③ ( 文件操作 | 使用 for 循环读取文件 | 使用 close 函数关闭文件 | with open 语法自动处理文件关闭 )
4270
【Python】类型注解 ④ ( 函数类型注解 | 函数形参类型注解语法 | 函数返回值类型注解 )
4600
【Python】Python 包 ② ( 自定义 Python 包 | 导入并调用自定义 Python 包 | `__init__.py` 定义 `__all__` 变量 )
5660
【Python】面向对象 ③ ( 构造函数 | 成员变量赋值问题 | 构造方法引入 | 构造函数可以同时定义成员变量 )
4320
相关推荐
【Python】多线程编程 ② ( 进程与线程 | 进程的内存空间 | 并行执行概念 | 线程的创建和执行 | threading.Thread() 函数解析 )
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验