Python学习:模块

python 模块

在这里插入图片描述

Python 的模块是一个包含 Python 代码的文件,被用来组织和重用代码。下面详细解释模块,并给出一个示例:

  1. 创建模块:要创建模块,只需编写包含函数、类或变量的 Python 文件,并将其保存为以 .py 结尾的文件,文件名即为模块名。

  2. 导入模块:可以使用 import 关键字导入其他模块,然后在代码中访问其中定义的内容。例如 import module_namefrom module_name import object

  3. 模块搜索路径:Python 解释器会在内置模块和 sys.path 列表中指定的目录中搜索模块。可以使用 sys.path.append() 在运行时添加自定义目录。

  4. :包是一个目录,包含多个模块文件,并且必须包含一个 __init__.py 文件。这有助于组织和管理大型项目。

  5. __name__ 属性:每个模块都有一个特殊属性 __name__。当模块被直接执行时,__name__ 的值为 '__main__';当作为导入模块时,__name__ 的值为模块名。

  6. 文档字符串:模块开头的字符串叫做文档字符串(docstring),用来描述模块的功能和用法。

示例代码如下:

# 模块名: my_module.pydef greet(name):print("Hello, " + name)if __name__ == "__main__":# 当模块被直接运行时,进行一些测试greet("Alice")greet("Bob")

另一个文件调用上述模块:

# 调用模块: main.pyimport my_modulemy_module.greet("Charlie")

这两个文件在同一目录下,通过 import my_module 导入了 my_module.py 中定义的 greet 函数,并在 main.py 中调用它。当 main.py 执行时,"Hello, Charlie" 将会被打印出来。

python import语句

在 Python 中,import 是一个关键字,用于导入其他模块中定义的对象,比如函数、类、变量等。下面是关于 import 的详细解释:
在这里插入图片描述

  1. 基本语法:使用 import 关键字可以导入整个模块,例如 import module_name。也可以从模块中导入特定的对象,例如 from module_name import object

  2. 导入模块:当使用 import module_name 时,整个模块会被加载到当前作用域中,并可以通过 module_name.object 访问其中定义的对象。

  3. 导入特定对象:当使用 from module_name import object 时,只导入指定的对象,可以直接使用 object 访问,无需加上模块名。

  4. 别名:可以为导入的模块或对象指定别名,使用 import module_name as aliasfrom module_name import object as alias

  5. 导入所有对象:使用 from module_name import * 可以导入模块中所有对象,不推荐经常使用,因为会导致命名冲突和代码可读性降低。

  6. 重复导入:Python 会检测到重复导入同一个模块,并只加载一次。避免在代码中多次导入同一个模块。

  7. sys.path 中搜索:Python 解释器会按照 sys.path 列表中指定的顺序搜索要导入的模块,可以在代码中修改 sys.path 列表来添加自定义模块路径。

示例:

# 导入整个模块
import math
print(math.pi)# 导入特定对象
from datetime import datetime
print(datetime.now())# 导入并为模块指定别名
import numpy as np
print(np.array([1, 2, 3]))# 导入并为对象指定别名
from random import randint as r
print(r(1, 100))# 导入所有对象(不推荐)
from os import *
print.getcwd()

以上示例展示了不同方式下的 import 用法。根据需要选择合适的导入方式,使代码更加清晰和易读。

python __name__dir()方法

__name__ 属性和 dir() 方法是 Python 中常用的属性和方法,用于获取模块的名称和列出模块中定义的标识符(如函数、类、变量等)。下面分别详细介绍:

  1. __name__ 属性
    • __name__ 是每个 Python 模块都具有的特殊属性。
    • 当一个模块被直接执行时,其 __name__ 属性的值为 '__main__',表示这个模块是主程序入口。
    • 当一个模块被导入时,其 __name__ 属性的值为模块的名字。

示例代码:

# sample_module.pyprint("Sample Module's Name: ", __name__)if __name__ == "__main__":print("This module is being run directly.")
else:print("This module is imported.")

当直接运行 sample_module.py 时,输出为:

Sample Module's Name:  __main__
This module is being run directly.

当其他文件导入 sample_module 时,输出为:

Sample Module's Name:  sample_module
This module is imported.
  1. dir() 方法
    • dir() 是一个内置函数,用于返回指定对象的所有属性和方法的列表。
    • 如果不提供参数,则返回当前作用域内的所有标识符。
    • 可以用于查看模块中定义的所有函数、类、变量等。

示例代码:

# sample_module.pydef greet(name):print("Hello, ", name)class MyClass:def __init__(self, x):self.x = xx = 10print(dir())

运行以上代码后,将输出包含模块中定义的所有标识符的列表,比如包含 greet 函数、MyClass 类和变量 x

综上所述,通过 __name__ 属性可以判断模块是直接运行还是被导入,而 dir() 方法则可以列出模块中定义的所有标识符,有助于了解模块的结构和内容。

python 标准模块和包

在 Python 中,标准模块和包是非常重要的概念,用于组织和管理代码。下面详细介绍标准模块和包的概念:

  1. 标准模块
    • 标准模块是与 Python 解释器一起安装的模块,包含在标准库中。
    • 标准模块可以直接使用,不需要额外安装。比如 mathossys 等。
    • 标准模块提供了许多常用的函数和类,方便开发者进行日常编程工作。

示例:

import math
print(math.sqrt(16))  # 使用 math 模块中的 sqrt 函数计算平方根
    • 包是一个包含多个模块的目录,通常包含一个名为 __init__.py 的文件。
    • __init__.py 文件可以为空,也可以包含包的初始化代码,确保包被正确导入和使用。
    • 包的目录结构可以帮助组织大型项目,使代码更加模块化和易于维护。

示例:

my_package/
│
├── __init__.py
│
├── module1.py
│
└── module2.py

在上述示例中,my_package 是一个包,包含 module1.pymodule2.py 两个模块,用于组织相关功能或代码。

总结:标准模块是 Python 自带的模块,而包是一个由多个模块组成的目录结构。标准模块提供了许多常用的功能,而包能够帮助组织和管理复杂的代码项目。通过合理使用标准模块和包,可以更好地组织代码、提高可维护性,并充分利用已有的功能模块。

关注我,不迷路,共学习,同进步

关注我,不迷路,共学习,同进步

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

在宝塔面板中,为自己的云服务器安装SSL证书,为所搭建的网站启用https(主要部分攻略)

前提条件 My HTTP website is running Nginx on Debian 10(或者11) 时间:2024-3-28 16:25:52 你的网站部署在Debain 10(或者11)的 Nginx上 安装单域名证书(默认)(非泛域名&#xf…

香港服务器怎么看是CN2 GT线路还是CN2 GIA线路?

不知道有没有小伙伴们注意过,很多人在租用香港服务器的时候都习惯性选择 CN2 线路?仿佛香港服务器是否采用 CN2 线路成为个人企业选择香港服务器的一个标准。其实,香港服务器有CN2、优化直连(163)、BGP多线(包含了国际和国内线路)&#xff0c…

健身运动耳机哪个牌子好?力荐五大品质翘楚的精品

健身已经成为许多人追求健康与活力的重要方式,而在健身的过程中,一款优质的耳机不仅能让你沉浸于音乐的世界,更能提升运动体验,激发无限潜能,那么如何选择一款既适合运动又品质卓越的耳机呢?今天我这个健身…

自动发卡平台源码优化版,支持个人免签支付

源码下载地址:自动发卡平台源码优化版.zip 环境要求: php 8.0 v1.2.6◂ 1.修复店铺共享连接时异常问题 2024-03-13 23:54:20 v1.2.5 1.[新增]用户界面硬币增款扣款操作 2.[新增]前台对接库存信息显示 3.[新增]文件缓存工具类[FileCache] 4.[新增]库存同…

期货开户要找到适合自己的系统

物有一个生物圈,大鱼吃小鱼,小鱼吃虾。在期货市场这条生物圈里面,大部分人就是期货市场的虾子,是被吃的,所以必须成长起来,往更高一层走,到可以吃虾子的时候,就是挣钱的时候。学习不…

buy me a btc 使用数字货币进行打赏赞助

最近在调研使用加密货币打赏的平台,发现idatariver平台 https://idatariver.com 推出的buymeabtc功能刚好符合使用场景,下图为平台的演示项目, 演示项目入口 https://buymeabtc.com/idatariver 特点 不少人都听说过buymeacoffee,可以在上面发…

Vue element-plus 导航栏 [el-menu]

导航栏 [el-menu] Menu 菜单 | Element Plus el-menu有很多属性和子标签,为网站提供导航功能的菜单。 常用标签: 它里面有两个子标签。el-menu-item,它其实就是el-menu每一个里面的item,item就是真实匹配到路由的每个栏目&#…

AP5414 0.8-5.5升压恒压 WLED 太阳能电源驱动方案

产品简介 AP5414 是一种输入电压范围宽(0.8~5.5V),可调恒定电流和限定电流两种模式来 驱动白光 LED 而设计的升压型 DC/DC 变换器。该器件能利用单节或双节干电池驱动单 颗大功率白光 LED,同样可以利用一节锂电池驱动两颗、三颗或…

Java基础-子类与继承

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、继承的概念 二、Java 方法重写 三、Object类 方法 四、final关键字 final 变量 五、Java 多态 …

基于CNN-RNN的动态手势识别系统实现与解析

一、环境配置 为了成功实现基于CNN-RNN的动态手势识别系统,你需要确保你的开发环境已经安装了以下必要的库和工具: Python:推荐使用Python 3.x版本,作为主要的编程语言。TensorFlow:深度学习框架,用于构建…

2024 蓝桥打卡Day25

CCFCSP算法练习 202305-1 重复局面 202305-2 矩阵运算 202303-1 田地丈量 202303-2 垦田计划

自学新标日第九课 (完结)

第九课 单词 单词假名声调词义料理りょうり1菜四川料理しせんりょうり4四川菜スープ1汤ペギンダック4北京烤鸭食べ物たべもの3食物すき焼きすきやき0日式牛肉火锅温泉おんせん0おんせんお湯おゆ0热水水みず0凉水浴衣ゆかた0浴衣眺めながめ&…

kubernetes(K8S)学习(五):K8S进阶(Lifecycle......偏理论)

K8S进阶(Lifecycle......偏理论) 一、Pod进阶学习之路1.1 Lifecycle1.2 重启策略1.3 静态Pod1.4 健康检查1.5 ConfigMap1.6 Secret1.7 指定Pod所运行的Node 二、Controller进阶学习之路2.1 Job & CronJob2.2 StatefulSet2.3 DaemonSet2.4 Horizontal…

Leo赠书活动-22期 【大模型在金融行业的应用场景和落地路径】文末送书

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 赠书活动专栏 ✨特色专栏:…

【UnityShader入门精要学习笔记】第九章 更复杂的光照(1)——渲染路径

本系列为作者学习UnityShader入门精要而作的笔记,内容将包括: 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更,有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 更复杂的光…

【每日一题】元素和最小的山形三元组 I

文章目录 Tag题目来源解题思路方法一:预处理枚举 写在最后 Tag 【预处理枚举】【数组】【2024-03-29】 题目来源 2908. 元素和最小的山形三元组 I 解题思路 方法一:预处理枚举 思路 朴素的方法是枚举所有可能的 山形三元组,找出最小的元…

解决npm init vue@latest证书过期问题:npm ERR! code CERT_HAS_EXPIRED

目录 一. 问题背景 二. 错误信息 三. 解决方案 3.1 临时解决办法 3.2 安全性考量 一. 问题背景 我在试图创建一个新的Vue.js项目时遇到了一个问题:npm init vuelatest命令出现了证书过期的错误。不过这是一个常见的问题,解决起来也简单。 二. 错误…

Rust编程(五)终章:查漏补缺

闭包 & 迭代器 闭包(Closure)通常是指词法闭包,是一个持有外部环境变量的函数。外部环境是指闭包定义时所在的词法作用域。外部环境变量,在函数式编程范式中也被称为自由变量,是指并不是在闭包内定义的变量。将自…

小狐狸JSON-RPC:钱包连接,断开连接,监听地址改变

detect-metamask 创建连接,并监听钱包切换 一、连接钱包,切换地址(监听地址切换),断开连接 使用npm安装 metamask/detect-provider在您的项目目录中: npm i metamask/detect-providerimport detectEthereu…

主从复制与读写分离

前言: 在企业应用中,成熟的业务通常数据量都比较大,单台MySQL在安全性、高可用性和高并发方面 都无法满足实际的需求? 配置多台主从数据库服务器以实现读写分离 一 主从复制的工作原理 ①Master节点将数据的改变记录成二进制…