Python语法进阶学习--模块和包

news2024/9/20 16:35:54

在学习python进阶知识中的面向对象之前,还要了解一下当中几个概念:包、模块、类和函数。

一.模块和包

模块和包:用来组织Python代码的。

  • 包 => 含有 __init__.py文件的文件夹
  • 模块 => py文件
  • 类 => class 【面向对象学习】
  • 函数(方法)=> def
    以上均不能以数字开头,也不能和python内置的一切重名

1.1包是具有特殊文件的文件夹

当我们使用一个包时,这个包目录下的__init__.py文件中的代码会自动执行。
包的 init 文件中,也可以设置 all 内置变量,限定 from 包名 import * 时默认导入的模块。
平时沟通时,包和模块的概念往往不区分
包和模块都存在内置的第三方的区别,第三方的就是玩家自己写的、非Python官方的

第三方包需要额外安装
安装命令:
pip install 包名或模块名 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install 包名或模块名==版本号
pip install 包名或模块名

卸载命令:pip uninstall 包名或模块名

注意:

  1. 安装第三方的包和模块是在 python 解释器安装目录的 Lib/site-packages 下面
  2. python虚拟环境和默认环境 需要各自安装各自的三方包!
    安装到指定的py虚拟环境下 /虚拟环境路径/python -m pip install 包名或模块名
    默认安装到默认python下:pip install 包名或模块名

1.2 模块的搜索路径

一切以被运行的python文件所在的路径为准,是工作路径,同时也是相对路径的起点

import sys
print(sys.path)
"""
sys.path可以说明:
运行py代码时,Python解释器会自动搜索要使用的模块
会自动向以下两个路径进行搜索:
1. 当前工作路径
2. Python虚拟环境路径

还可以手动添加导包环境路径:
import sys
sys.path.append('要导包的位置')

注意:自定义的一切变量、函数、类、模块、包,都不要和python内置的一切重名!
"""

二.模块和包的使用

在我们写Python代码的时候,常常需要导入一些模块和包,下面是导入模块和包的几种方式。
在这里插入图片描述
假设有一个包(包的名字:my_module),包里面会有一个__init__.py文件,在里面再创建自己的模块py文件(名字:my_module),文件里面有自己写的func_1函数。

方式一:import 模块名

示例:
import my_module
print(my_module.func_1(1,2))
print(my_module.arg_a)

方式二:from 模块 import 函数

示例:
from my_module import func_1,arg_a
print(func_1(2,3))
print(arg_a)

方式三:用 as关键字 起别名

示例1:
import os as winos
ret = winos.listdir()
print(ret)

示例2:
from os import listdir as win_listdir
ret = win_listdir()
print(ret)

方式四:(不推荐)from 模块名 import *

原因如下:
1- 不方便阅读
2- 如果有多个导入,会导致重名的问题
3- 配合__all__使用,会有使用限制

三.__name__ 属性

只有运行入口的py文件(模块)的__name____main__,其他被引用的文件(模块)的__name__是不带扩展名的文件名

下边的a.py和b.py两个文件,在同一目录中!
a.py - 运行该文件

print("a模块的name属性值",__name__)

if __name__ == '__main__':
    print("对数据库中数据删除的操作")

b.py

print(__name__)

if __name__ == '__main__':
    # 如果被其他py文件引用,这里将不会执行
    # 因为被引用时,b.py的__name__是 b,而不是__main__
    # 只有b.py作为主文件运行时,b的__name__才是__main__
    print('bbbb')
    print(__name__)
__name__属性总结
1- 代码中一般都会写下面的判断语句,也就是if __name__ == '__main__':
2- 该判断,是用来限定某些代码只在执行该模块代码的时候才执行。一般放的是测试代码,或者是整个程序的入口函数

四.__all__属性

如果一个py文件(模块)中有 __all__变量(list类型),当其他py文件(模块)使用from 模块名 import *引用它时,只能导入这个列表中指定的内容

a.py

__all__ = ['foo', 'my_int'] 

my_int = 666

def foo():
    return my_int

def bar():
    return 777

b.py - 运行该文件

# from a import *
#
# print(my_int)
# print(foo())
# print(bar())

from a import my_int,foo,bar
print(my_int)
print(foo())
print(bar())
__all__属性总结
1- __all__是一个列表,用来控制其他导入的时候,使用权限。需要配合import *
2- 如果在import中明确要导入的内容,那么是不受__all__属性影响

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

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

相关文章

陀螺仪LSM6DSV16X与AI集成(5)----6D方向检测功能

陀螺仪LSM6DSV16X与AI集成.5--6D方向检测功能 概述视频教学样品申请源码下载生成STM32CUBEMX串口配置IIC配置CS和SA0设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置6D方向检测功能配置选择滤波和角度阈值设置量程和速率获取所有中断源的状态发送相应信息演示 概述 陀…

计算机基础面试题 |18.精选计算机基础面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

大数据StarRocks(六) :Catalog

StarRocks 自 2.3 版本起支持 Catalog(数据目录)功能,实现在一套系统内同时维护内、外部数据,方便您轻松访问并查询存储在各类外部源的数据。 1. 基本概念 内部数据:指保存在 StarRocks 中的数据。 外部数据&#xf…

【QML COOK】- 003-处理鼠标事件

1. 编辑main.qml import QtQuickWindow {width: 800height: 800visible: truetitle: qsTr("Hello World")Image {id: backgroudanchors.fill: parentsource: "qrc:/Resources/Images/arrow.png"}MouseArea {anchors.fill: parentonClicked: backgroud.rot…

Python(30):非对称加密算法RSA的使用(openssl生成RSA公私钥对)

Python(30):非对称加密算法RSA的使用(openssl生成RSA公私钥对) 1、openssl生成RSA公私钥对 1.1、生成RSA公私钥对命令 [rootloaclhost ~]# openssl OpenSSL> genrsa -out rsa_private_key.pem 1024 Generating RSA private key, 1024 bit long modulus .. ...…

微服务概述之单体架构

微服务概述 互联网始于 1969年美国的阿帕网(ARPA),最开始的阿帕网只在美国军方使用。随着时间的推移,一些大学也开始加入建设,慢慢演化成了现在的因特网 (Internet)。随着计算机网络的普及&…

图像融合论文阅读:CrossFuse: 一种基于交叉注意机制的红外与可见光图像融合方法

article{li2024crossfuse, title{CrossFuse: A novel cross attention mechanism based infrared and visible image fusion approach}, author{Li, Hui and Wu, Xiao-Jun}, journal{Information Fusion}, volume{103}, pages{102147}, year{2024}, publisher{Elsevier} } 论文…

1.1map

unordered_map和map的使用几乎是一致的&#xff0c;只是头文件和定义不同 #include<iostream> #include<map>//使用map需要的头文件 #include<unordered_map>//使用unordered_map需要的头文件 #include<set>//使用set需要的头文件 #include<uno…

用通俗易懂的方式讲解:如何提升大模型 Agent 的能力?

大型语言模型&#xff08;LLM&#xff09;的出现带火了Agent。利用LLM理解人类意图、生成复杂计划并且能够自主行动的能力。Agent具有无与伦比的能力&#xff0c;能够做出类似于人类复杂性的决策和完成一些复杂的工作。 目前市面上已经出现非常多得Agent框架&#xff1a;XAgen…

如何使用PR制作抖音视频?抖音短视频创作素材剪辑模板PR项目工程文件

如何使用PR软件制作抖音视频作品&#xff1f;Premiere Pro 抖音短视频创作素材剪辑模板PR项目工程文件。 3种分辨率&#xff1a;10801920、10801350、10801080。 来自PR模板网&#xff1a;https://prmuban.com/37058.html

双向逆变器流程

逆变过程 反向充电过程 首先AC整流&#xff0c;然后经过LLC电路进行DC-DC转换&#xff0c;这样就可以给电池充电了。也就是市电通过上面的电路就可以存储到电池里面。能量存储到电池里面&#xff0c;后面需要用的时候&#xff0c;也可以通过一定电路把能量释放出来。这就是逆变…

20240107让Firefly的AIO-3399J开发板的Android11下配置为默认1080p录像

20240107让Firefly的AIO-3399J开发板的Android11下配置为默认1080p录像 2024/1/7 23:01 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2.ab Androi…

江科大-stm32-B站系统初识笔记P2

文章目录 一&#xff1a;ARM是什么二&#xff1a;关键字介绍 推荐视频&#xff1a;《 STM32入门教程-2023版 细致讲解 中文字幕》 一&#xff1a;ARM是什么 ①&#xff1a; ST – 意法半导体 M – Microelectronics 微电子 32 – 总线宽度 ARM架构: Cortex-A:Application 应用…

linux常见操作,and一些练习题加线上练习网站,无须配置linux.持续更新中。。。。

文章目录 cd命令相对路径特殊的路径表达符和cd一起使用pwdmore 查看文件内容支持翻页小技巧clear用户&#xff0c;用户权限 and 用户的切换如何创建用户 ls和通配符的使用利用通配符 *grep 过滤管道符 |如何学习Linux在线练习网站 https://www.lanqiao.cn/courses/1 cd命令 cd…

TrueNAS数据共享——SMB共享日志审计

日志审计对于事后溯源十分重要&#xff0c;所以使用TrueNAS共享时&#xff0c;开启Samba audit审计日志功能很有必要。Full_Audit 允许记录共享上的所有操作&#xff0c;如创建文件、删除文件、更改路径… 一、编辑SMB服务 1、进入smb服务编辑 服务--找到SMB--动作--高级选项…

Notepad++ v7.7.1 安装及添加插件

1、notepad_v7.7.1.zip npp.7.7.1.Installer.x64.exe npp.7.7.1.Installer.x86.exe notepad_v7.7.1.ziphttps://www.123pan.com/s/VTMXjv-X6H6v.html 2、notepad插件包_64bit_4.zip ComparePlugin ---->文件对比插件 ComparePlugin.dllNppFTP ---->FTP、FTPES和SFTP …

python自动化运维管理拓扑

目录 1、简介 2、实验环境 3、拓扑图 4、需求及其代码 4.1、测试连通性 4.2、远程登陆 4.3、配置loopback 4.4、监控内存使用率 4.5、自动化巡检内存使用率 4.6、自动化配置snmp服务 4.7、提取分析字符串 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业…

记一次生产事故排查

背景&#xff1a;刚接手一个新工程&#xff0c;是一个给国内top级医院开发的老项目&#xff0c;因为历史原因&#xff0c;代码质量略低&#xff0c;测试难度略高。 上线很久的功能&#xff0c;最近一直频繁的爆发各种问题&#xff0c;经排查发现都是因为在业务过程中im聊天账号…

Hyperledger Fabric 生成组织身份解析

fabric 版本 2.4.1 Fabric 网络通过证书和密钥来管理和认证成员身份&#xff0c;经常需要生成证书文件。通常这些操作可以使用 PKI 服务&#xff08;如 Fabric-CA&#xff09;或者 OpenSSL 工具来实现&#xff08;针对单个证书的签发&#xff09;。为了方便批量管理组织证书&am…

网页设计工作室网站Web前端制作个人网页(html+css+javascript)网页设计网站模板采用DIV CSS布局制作,网页作品有多个页面

网页设计工作室网站Web前端制作个人网页(htmlcssjavascript)网页设计网站模板采用DIV CSS布局制作&#xff0c;网页作品有多个页面 【网页设计工作室网站Web前端制作个人网页(htmlcssjavascript)网页设计网站模板采用DIV CSS布局制作&#xff0c;网页作品有多个页面】 https://…