24 浅谈模块

1、定义:

  1. 模块本质上就是一个.py文件
  2. import语句用于导入模块
  3. if __name__ == "__main__"用于区分直接运行和被导入
  4. sys.argv包含命令行参数
  5. 模块可以包含函数、类和变量

2、模块查找机制

Python解释器按以下顺序查找模块:

  1. 当前目录
  2. PYTHONPATH环境变量中的目录
  3. Python标准库目录
  4. 第三方包目录(site-packages)
  5. 可以通过sys.path查看完整的模块搜索路径。

3、模块的结构如下

#!/usr/bin/env python3  # 这是一个shebang行,告诉Unix/Linux系统使用哪个Python解释器来执行此脚本
# -*- coding:utf-8 -*-  # 这是编码声明,指定源代码文件的编码格式为UTF-8"""
Python模块详解与示例
------------------
这是一个模块的文档字符串(docstring),用三引号包围。
当使用help()函数查看模块信息时,这部分内容会被显示出来。
模块是Python代码逻辑组织和重用的基本单位。
"""# 模块元信息定义(这些变量通常以双下划线开头和结尾,被称为"魔术变量"或"双下变量")
__author__ = "Michael Liao"  # 模块作者信息
__version__ = "0.1"  # 模块版本号,遵循语义化版本规范
__date__ = "2025-03-14"  # 模块创建/修改日期
__time__ = "10:00:00"  # 模块创建/修改时间
__email__ = "michael@example.com"  # 作者联系方式
__license__ = "MIT"  # 模块许可证类型
__description__ = "A test module"  # 模块简短描述# 导入其他模块
# sys模块提供了与Python解释器及其环境交互的函数和变量
import sys  # 系统相关的参数和函数# 模块中的函数定义
def test():"""测试函数 - 演示如何处理命令行参数sys.argv是一个列表,包含了命令行参数:- argv[0]是脚本名称- argv[1]及之后的元素是传递给脚本的参数"""args = sys.argv  # 获取命令行参数列表print("args:", args)# 根据参数数量执行不同的操作if len(args) == 1:# 没有额外参数时print("Hello, world!")print("参数是:", args[0])  # 打印脚本名称elif len(args) == 2:# 有一个额外参数时print("Hello, %s!" % args[1])  # 使用第一个参数else:# 有多个额外参数时print("Too many arguments!")# 模块执行入口
# 这个条件判断是Python模块的一个重要习惯用法
# 它使得这个文件既可以作为模块被导入,也可以作为脚本直接运行
if __name__ == "__main__":"""当直接运行此脚本时,__name__变量的值为"__main__"当作为模块被其他脚本导入时,__name__变量的值为模块名(即文件名去掉.py)这种模式允许代码在不同情况下有不同的行为:- 作为脚本运行时执行测试函数- 作为模块导入时只提供函数和类,不执行具体操作"""test()  # 调用测试函数"""
模块使用方法总结:
---------------
1. 直接运行:python 29.模块.py [参数1] [参数2]...2. 作为模块导入:import 模块名                  # 导入整个模块from 模块名 import 函数名      # 只导入特定函数from 模块名 import *          # 导入所有内容(不推荐)import 模块名 as 别名          # 使用别名导入3. 模块查找路径:Python解释器按以下顺序查找模块:- 当前目录- PYTHONPATH环境变量中的目录- Python标准库目录- 第三方包目录(site-packages)可以通过sys.path查看完整的模块搜索路径
"""

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

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

相关文章

《论分布式系统架构设计及其应用》架构师论文

【摘要】 2022年3月,我参与了某金融科技公司“智能风控云平台”项目的研发工作,担任系统架构师职务,负责分布式系统架构设计与核心技术选型。该平台旨在为银行、保险等金融机构提供实时风险评估、反欺诈及数据服务,需支撑每秒十万…

黄金还能再涨吗?

写在前面:【财富自由计算助手】已上线,快算算你的财富自由要多少 逻辑比事实更真实。 最近,黄金涨得妈都不认。 连菜市场大妈都在讨论,要不要囤点黄金。 2022 年初,俄乌冲突升级为全面战争以来,黄金价格…

AutoDev × MCP 双向赋能:AutoDev 即 MCP 服务,MCP 服务即 AutoDev 指令

在 Agentic Coding 这一话题下,工具使用(Tool Use/Function calling)是一个非常有意思的话题。完成一个软件开发任务,需要使用到大量的工具, 除去在 IDE 及其插件生态本身提供的功能外,还会使用到大量的外部…

DataWhale 大语言模型 - GPT和DeepSeek模型介绍

本课程围绕中国人民大学高瓴人工智能学院赵鑫教授团队出品的《大语言模型》书籍展开,覆盖大语言模型训练与使用的全流程,从预训练到微调与对齐,从使用技术到评测应用,帮助学员全面掌握大语言模型的核心技术。并且,课程…

安装 oepn-webui报错 Cannot connect to host api.openai.com:443 ssl

一、发现问题 安装 open-webui 的报错 api.openai.com 不通,因为 open-webui 最新版和以前的不一样了,所以网上的很多资料都用不了,经过一番摸索,找到解决办法 另外如果发现浏览器打开之后白屏,则是因为后台正在配置…

【6】树状数组学习笔记

前言 树状数组是我学的第一个高级数据结构,属于 log ⁡ \log log 级数据结构。 其实现在一般不会单独考察数据结构,主要是其在其他算法(如贪心,DP)中起到优化作用。 长文警告:本文一共 995 995 995 行…

研发团队协作软件推荐:18款工具对比

本文将深入对比18款主流研发团队协作软件:PingCode、 Worktile、钉钉、飞书、企业微信、Teambition、蓝湖、石墨文档、明道等。 在当今信息化时代,研发团队协作软件已经成为企业提高工作效率、改善团队沟通与管理的重要工具。借助这些软件,企…

Java8的新特性

1.Lambda表达式和函数式接口 Lambda的基础:函数式接口 Java 8与之前版本的区别: Java 7及之前:接口中只能包含抽象方法,无法通过函数式接口简洁地表示Lambda表达式。Java 8:通过FunctionalInterface注解,明…

数据库管理-第302期 国产类RAC架构数据库网络连接方式(20250314)

数据库管理302期 2025-03-14 数据库管理-第302期 国产类RAC架构数据库网络连接方式(20250314)1 Oracle RAC2 DMDSC3 YAC4 KES RAC总结 数据库管理-第302期 国产类RAC架构数据库网络连接方式(20250314) 作者:胖头鱼的鱼…

Spring框架详解(IOC容器-上)

IOC( Inversion of Control,控制反转)和DI(dependency injection)是Spring框架的核心特性,也是Spring框架的基础。 Spring框架作为一个IOC容器,负责加载、创建和管理Spring Bean。 接下来介绍…

架构学习第八周--Kubernetes博客搭建

目录 一、整体架构 二、部署MySQL主从 三、部署Redis哨兵 四、部署WordPress 五、注意事项 一、整体架构 本项目为在一主三从的Kubernetes集群上部署WordPress博客。因为WordPress部分容器版本自行集成Apache和PHP服务,因此在Kubernetes上部署WordPress只需提供…

【品铂科技】在高精度定位行业内的口碑怎么样?

1. ‌技术实力与行业认可‌ 公司自主研发的ABELL无线实时定位系统在复杂环境中(如工业、司法监狱等)展现出厘米级(5-10厘米)高精度定位能力,客户反馈系统稳定性强、抗干扰能力突出,成为行业技术标杆‌。参…

长度最小的子数组-滑动窗口解法

本来觉得自己双指针学的还可以了,于是今天直接刷了一道滑动窗口题,没想到还是被坑绊倒了两次。这次我想记录在博客里,不仅可以防止我以后重蹈覆辙,兴许也还可以帮助到其他人。 题目来自力扣:209. 长度最小的子数组 - …

深入理解Linux网络随笔(七):容器网络虚拟化--Veth设备对

深入理解Linux网络随笔(七):容器网络虚拟化 微服务架构中服务被拆分成多个独立的容器,docker网络虚拟化的核心技术为:Veth设备对、Network Namespace、Bridg。 Veth设备对 veth设备是一种 成对 出现的虚拟网络接口&…

深入理解 Maven BOM 及其继承特性

深入理解 Maven BOM 及其继承特性 一、什么是 Maven BOM? Maven BOM(Bill Of Materials,物料清单)是一种特殊的 Maven 项目,用于集中管理依赖项的版本信息。BOM 项目本身并不包含实际的代码或资源,而仅仅…

C语言(25)

一.数据在内存中的存储 1.整数在内存中的存储 整数在内存中以二进制的形式储存,分别为原码,补码,反码 有符号的整数,在上述三种形式都有符号位和数值位两个部分,符号位为0是正数,1是负数,最高…

一篇博客搞定时间复杂度

时间复杂度 1、什么是时间复杂度?2、推导大O的规则3、时间复杂度的计算3.1 基础题 13.2 基础题 23.3基础题 33.4进阶题 13.5进阶题 23.6 偏难题 13.7偏难题 2(递归) 前言: 算法在编写成可执行程序后,运行时要耗费时间和…

探索 Trossen AI:从 Aloha到智能机器人平台的进化之路

在人工智能与机器人技术快速发展的当下,科研硬件的性能与成本成为影响行业创新的重要因素。Trossen Robotic为在机器人领域二十余年的知名企业,近日推出的 Trossen AI 系列产品,为科研机构与开发者提供了高性能、高性价比的解决方案。 Trosse…

【Power Platform系列】如何在画布应用中调用工作流上传附件

在Power Apps画布应用中上传附件,比如到SharePoint文档库最典型的方式非常简单,插入一个编辑窗体,将窗体和背后的文档库绑定起来即可以快速实现。不过窗体内部的显示格式很难控制,如果要实现更为灵活的控制,就需要采用…

工作记录 2017-01-12

序号 工作 相关人员 1 协助BPO进行Billing的工作。 处理Amazing Charts的数据查询。 修改BillingJobPoster,处理CCDA 的自动导入,预计还需一天才能完成。 修改录入Code的界面(code 移动到指定位置),预计明天更新。…