Python----Python高级(模块与包,Python基本库)

ops/2025/1/21 19:52:13/

一、模块

1.1、概念

就是一个包含了Python代码的以.py为后缀的Python文件,可以被其他 Python程序导入和使用,也可以自己独立执行,里面存放着的是一组相关的函 数或者类,比如查看关键字列表时导入的keyword模块。

1.2、作用 

令Python代码的编写不必从零开始,不用重复“造轮子”的过程。

避免了同一模块内的命名重复问题。

方便代码的管理与维护,提高代码的可读性。

1.3、分类 

内置模块:Python解释器自带的标准库模块,可以直接导入使用,比如 keyword、os等,这些模块可直接导入而不需要安装,在所有安装了Python 解释器的电脑上都可以运行且每个py文件都会自动导入builtins模块。

        import builtins

第三方模块:由其他开发者开发且需要通过包管理工具(pip)安装的模块,比 如Numpy、Pandas等库,如果有代码需要放到别的电脑上运行,那么这个电 脑也需要先安装用到的第三方库才可以正常运行。

自定义模块:用户根据需求自己编写的.py文件。 

1.4、内置变量 

可通过dir()查看模块的内置变量

python">import builtins
print(dir(builtins))
'''
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 
'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 
'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 
'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 
'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 
'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 
'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 
'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 
'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 
'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 
'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 
'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 
'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 
'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 
'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', 
'__IPYTHON__', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', 
'__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 
'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 
'delattr', 'dict', 'dir', 'display', 'divmod', 'enumerate', 'eval', 'exec', 'execfile', 'filter', 'float', 
'format', 'frozenset', 'get_ipython', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 
'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 
'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'range', 'repr', 'reversed', 'round', 
'runfile', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
'''

__name__:用于确定模块是被直接运行还是被导入到其他模块中。当一个模块被直接运行时,__name__的值是”__main__”,否则为模块的名称

python">print(__name__)#__main__
python">import time
time.__name__#'time'

__doc__:包含模块的说明性文档。

python">import time
print(time.__doc__)
'''
This module provides various functions to manipulate time values.There are two standard representations of time.  One is the number
of seconds since the Epoch, in UTC (a.k.a. GMT).  It may be an integer
or a floating point number (to represent fractions of seconds).
The Epoch is system-defined; on Unix, it is generally January 1st, 1970.
The actual value can be retrieved by calling gmtime(0).The other representation is a tuple of 9 integers giving local time.
The tuple items are:year (including century, e.g. 1998)month (1-12)day (1-31)hours (0-23)minutes (0-59)seconds (0-59)weekday (0-6, Monday is 0)Julian day (day in the year, 1-366)DST (Daylight Savings Time) flag (-1, 0 or 1)
If the DST flag is 0, the time is given in the regular time zone;
if it is 1, the time is given in the DST time zone;
if it is -1, mktime() should guess based on the date and time.
'''

__file__:包含模块的文件路径。

python">import os
print(os.__file__)
# d:\Anaconda3\envs\pythonproject\Lib\os.py

__all__:定义一个模块中的哪些变量、函数或类可以通过from module import *导入时可以用。

python">import os
print(os.__all__)
'''
['altsep', 'curdir', 'pardir', 'sep', 'pathsep', 'linesep', 'defpath', 'name', 'path', 'devnull', 
'SEEK_SET', 'SEEK_CUR', 'SEEK_END', 'fsencode', 'fsdecode', 'get_exec_path', 'fdopen', 'extsep', 
'_exit', 'DirEntry', 'EX_OK', 'F_OK', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 
'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 
'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'R_OK', 'TMP_MAX', 
'W_OK', 'X_OK', 'abort', 'access', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'device_encoding', 
'dup', 'dup2', 'environ', 'error', 'execv', 'execve', 'fspath', 'fstat', 'fsync', 
'ftruncate', 'get_blocking', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 
'getcwdb', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'link', 'listdir', 'listdrives', 
'listmounts', 'listvolumes', 'lseek', 'lstat', 'mkdir', 'open', 'pipe', 'putenv', 'read', 'readlink', 
'remove', 'rename', 'replace', 'rmdir', 'scandir', 'set_blocking', 'set_handle_inheritable', 'set_inheritable', 
'spawnv', 'spawnve', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 
'symlink', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 
'unsetenv', 'urandom', 'utime', 'waitpid', 'waitstatus_to_exitcode', 'write', 'makedirs', 
'removedirs', 'renames', 'walk', 'execl', 'execle', 'execlp', 'execlpe', 'execvp', 'execvpe', 
'getenv', 'supports_bytes_environ', 'spawnl', 'spawnle', 'popen']
'''

__package__:包含模块所在的包的名称。

python">import numpy
print(numpy.__package__)#numpy

__dict__:包含模块的全局命名空间。

python">import numpy
print(numpy.__dict__)

1.5、模块导入 

1.5.1、import语句导入

python">import 模块名        #导入一个模块
import 模块1,模块2…   #导入多个模块
import 模块名  as 模块别名   #导入模块并使用新名字

import加载的模块分为四种类型:


        使用python编写的代码.py文件


        已被编译为共享库或DLL的C或C++扩展


        一组模块的包


        使用C编写并链接到python解释器的内置模块 

python">import mathprint(id(math))#2707970757536
print(type(math))#<class 'module'>
print(math.pi)  #3.141592653589793

1.5.2、from…import导入

基本语法格式:

        from 模块名 import 成员1,成员2,…

        尽量避免from 模块名 import *这种写法。*它表示导入模块中所有的不是以下划线_开头的名字都导入到当前位置。 但你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差。一般生产环境中尽量避免使用,学习时没有关系。 

python">from math import pi,sinprint(sin(pi/2))  #输出1.0

1.5.3、import语句和from...import语句的区别

import导入的是模块。from...import导入的是模块中的函数/类。

import导入的是“文件”,我们要使用该“文件”下的内容,必须前面加“文件名称”。from...import导入的是文件下的“内容”,我们直接使用这些“内容”即可,前面再也不需要加“文件名称”了。 

python">from math import pi,sin
import mathprint(math.sin(math.pi/2))#输出1.0
print(math.pi)#3.141592653589793
print(sin(pi/2))  #输出1.0

二、包

就是一个有层次的文件目录结构,用来更好的组织和管理模块。通俗的说就 是一个目录,里面存放python文件和新的包目录,并且每一个包目录都需要存在 一个__init__.py文件,__init__.py文件可以没有内容,但必须有这个文件。

__init__.py文件的主要作用:

        标识包目录:告诉Python解释器该文件所在的目录应被视为一个包而不是一个普通的目录。如果没有这个文件,可能会无法正常导入包内的模块。

        执行初始化代码:在该文件中也可以存在代码,在调用该包里的模块时,该文件里的代码也会被运行。

        控制包的导入行为:通过__all__来控制哪些模块可以被导入,从而限制包的公开接口,防止不需要的模块导入。

        提供包级别的命名空间:在该文件中定义的变量和函数可以在包的其他模块中共享。

        批量导入模块:在该文件中可以批量导入系统模块或其他模块。 

三、基本的Python库

标准库

        Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。

Python标准库的主要功能有:

  1. 文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能

  2. 文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能

  3. 操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、日志(logging)等功能

  4. 网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能

  5. 网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架

  6. W3C格式支持,包含HTML,SGML,XML的处理。

  7. 其它功能,包括国际化支持、数学运算、HASH、Tkinter等

3.1、os

模块提供了与操作系统交互的功能,如文件和目录操作。

python">import os  # 获取当前工作目录  
current_directory = os.getcwd()  
print("当前工作目录:", current_directory)  # 列出当前目录中的文件和文件夹  
files = os.listdir(current_directory)  
print("当前目录中的文件和文件夹:", files)  # 创建一个新目录  
os.mkdir('new_directory')  
print("已创建新目录: new_directory")

3.2、sys

模块提供了对Python解释器的访问,允许您与Python的运行环境进行交互。

python">import sys  # 获取Python版本信息  
print("Python版本:", sys.version)  # 获取命令行参数  
print("命令行参数:", sys.argv)  # 退出程序  
# sys.exit("程序结束")

3.3、time

模块提供了时间相关的功能,包括时间延迟、时间戳等。

python">import time  # 获取当前时间戳  
timestamp = time.time()  
print("当前时间戳:", timestamp)  # 暂停程序执行2秒  
print("暂停2秒...")  
time.sleep(2)  
print("继续执行")

3.4、random

模块用于生成随机数和随机选择。

python">import random  # 生成一个0到10之间的随机整数  
random_integer = random.randint(0, 10)  
print("随机整数:", random_integer)  # 从列表中随机选择一个元素  
choices = ['apple', 'banana', 'cherry']  
random_choice = random.choice(choices)  
print("随机选择的水果:", random_choice)

3.5、math

模块提供了数学函数和常量,如三角函数、对数等。

python">import math  # 计算平方根  
sqrt_value = math.sqrt(16)  
print("16的平方根:", sqrt_value)  # 计算圆周率  
pi_value = math.pi  
print("圆周率:", pi_value)  # 计算正弦值  
sine_value = math.sin(math.pi / 2)  
print("sin(π/2):", sine_value)

四、思维导图 

 


http://www.ppmy.cn/ops/151990.html

相关文章

洛谷 P2392 kkksc03考前临时抱佛脚 刷题笔记 dfs

P2392 kkksc03考前临时抱佛脚 - 洛谷 | 计算机科学教育新生态 题目分析 左右脑双核 当我们给左右脑各自分配一道题时 消耗的时间为两者中耗时较长的一道题 我们尝试把每一道题都分配给左右脑试一试 即可遍历所有答案 关键在于答案怎么取保证耗时最短 if(step>a[x])…

ingress-nginx代理tcp使其能外部访问mysql

一、helm部署mysql主从复制 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo updatehelm pull bitnami/mysql 解压后编辑values.yaml文件&#xff0c;修改如下&#xff08;storageclass已设置默认类&#xff09; 117 ## param architecture MySQL archit…

TCP断开通信前的四次挥手(为啥不是三次?)

1.四次握手的过程 客户端A发送 FIN&#xff08;终止连接请求&#xff09; A&#xff1a;我要断开连接了&#xff08;FIN&#xff09;。A进入FIN_WAIT_1状态&#xff0c;表示请求断开&#xff0c;等待对方确认。 服务器B回复 ACK&#xff08;确认断开请求&#xff0c;但还未准备…

Vue2:el-tree用scope slot为每一个节点添加一个鼠标悬浮时出现的右对齐的按钮

el-tree中,每一个节点后面添加一个按钮,响应除节点点击事件之外的操作,要求: 1、按钮在鼠标悬浮在该节点之上时才出现 2、按钮右对齐 实现如下。 1、为每个节点添加按钮 从官网说明来看,有两种方式添加按钮,render-content和 scoped slot,我使用的是scoped slot方式…

2025年免费量化交易软件——PTrade(含开通攻略)

量化交易软件&#xff0c;为广大投资者提供了一个便捷、高效的投资工具。 本文重点为大家介绍一款2025年好用的免费量化交易软件&#xff1a;PTrade量化&#xff0c;并详解其功能、特点、开通方法等。 一、PTrade的概念 PTrade是恒生电子开发的一款交易终端软件&#xff0c;旨…

【面试题】JVM部分[2025/1/13 ~ 2025/1/19]

JVM部分[2025/1/13 ~ 2025/1/19] 1. JVM 由哪些部分组成&#xff1f;2. Java 的类加载过程是怎样的&#xff1f;3. 请你介绍下 JVM 内存模型&#xff0c;分为哪些区域&#xff1f;各区域的作用是什么&#xff1f;4. JVM 垃圾回收调优的主要目标是什么&#xff1f;5. 如何对 Jav…

springboot基于微信小程序的传统美食文化宣传平台小程序

Spring Boot 基于微信小程序的传统美食文化宣传平台 一、平台概述 Spring Boot 基于微信小程序的传统美食文化宣传平台是一个集传统美食展示、文化传承、美食制作教程分享、用户互动交流以及美食相关活动推广为一体的综合性线上平台。它借助 Spring Boot 强大的后端开发框架构…

32单片机从入门到精通之测试与验证——单元测试(十五)

人生苦短&#xff0c;我们都会面临困难和挑战。但是&#xff0c;只要我们保持积极的心态和勇往直前的精神&#xff0c;我们就能战胜一切困难&#xff0c;实现自己的目标。 成功并不是一蹴而就的&#xff0c;它需要我们付出努力和坚持不懈。就像爬山一样&#xff0c;我们可能会遇…