Python模块的介绍
什么是模块
为什么要用模块
模块的分类和形式
模块的导入方式
导入语句的其他方式
判断文件类型
什么是模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
为什么要用模块
为什么要用模块?
站在巨人的肩膀上,别人写好的一些功能我们把它下载下来直接用在我们自己的项目中,大大提高开发效率
支付宝支付、微信支付、发短信、验证码、等等很多的服务
模块的分类和形式
1. 内置模块(python解释器原来就存在的,在任何位置,任何时间都可以直接使用)
eg:time
2. 第三方的(别人写好的模块,人家放在了网上,去网上下载)
3. 自定义的(我们自己写的模块)
1. 我们自己写的python代码(.py文件)
2. 包的形式:就是一系列py文件的组合(文件夹)
模块的导入方式之import句式
import md
"""
学习模块的时候一定要弄清楚:谁是执行文件,谁是导入文件?
运行当前文件,会导入md文件到此文件中,并且会执行导入文件
导入文件多次,那么,也只会执行一次导入文件中得代码,只需要导入一次即可
导入文件的时候发生了什么事儿?
1. 首先会运行执行文件,产生执行文件的全局名称空间
2. 运行导入文件
3. 会产生导入文件的全局名称空间,把导入文件中的名字都丢到全局名称空间中
4. 会在执行文件中产生一个名字md指向导入文件的名称空间
"""
from … import 语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:
from modname import name1[, name2[, ... nameN]]
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
from … import * 语句
"""
from...import...句式
导入模块也会执行导入文件,多次导入也只会执行一次,跟import句式一样
导入文件的时候发生了什么事儿?
1. 首先会运行执行文件,产生执行文件的全局名称空间
2. 运行导入文件md
3. 会产生导入文件的全局名称空间,把导入文件中的名字都丢到全局名称空间中
4. 会在执行文件中产生一个名字money指向导入文件的名称空间中得money
如果使用from...import...句式的情况,在执行文件中会出现名字冲突的情况(在执行文件中出现了和导入的名字一样的时候)
出现冲突的时候离谁近用谁的
以后所有的导入语句都写在文件的开头
"""
导入语句的其他用法
1. 起别名
from md import money as m
from md import read1 as r1
2. 连续导入
import md
import time
import os
import sys
import md,time,os,sys
3. 通用导入
from md import *
from md import *
read1()
change()
__all__ = ['money' , 'read1' , 'change' ]
循环导入
如果你的代码出现了循环导入问题,那就是你的代码设计不合理,及时更正
判断文件类型(执行文件、导入文件)
if __name__ == '__main__' :
read2()
if __name__ == '__main__' :
'''在这个判断里面写的代码,只有是以执行文件运行的时候,才会被执行,当被当成导入文件的时候,不会被运行'''
dir() 函数
内置的函数 dir () 可以找到模块内定义的所有名称。以一个字符串列表的形式返回:
import fibo, sys
dir (fibo)
['__name__' , 'fib' , 'fib2' ]
dir (sys)
['__displayhook__' , '__doc__' , '__excepthook__' , '__loader__' , '__name__' ,
'__package__' , '__stderr__' , '__stdin__' , '__stdout__' ,
'_clear_type_cache' , '_current_frames' , '_debugmallocstats' , '_getframe' ,
'_home' , '_mercurial' , '_xoptions' , 'abiflags' , 'api_version' , 'argv' ,
'base_exec_prefix' , 'base_prefix' , 'builtin_module_names' , 'byteorder' ,
'call_tracing' , 'callstats' , 'copyright' , 'displayhook' ,
'dont_write_bytecode' , 'exc_info' , 'excepthook' , 'exec_prefix' ,
'executable' , 'exit' , 'flags' , 'float_info' , 'float_repr_style' ,
'getcheckinterval' , 'getdefaultencoding' , 'getdlopenflags' ,
'getfilesystemencoding' , 'getobjects' , 'getprofile' , 'getrecursionlimit' ,
'getrefcount' , 'getsizeof' , 'getswitchinterval' , 'gettotalrefcount' ,
'gettrace' , 'hash_info' , 'hexversion' , 'implementation' , 'int_info' ,
'intern' , 'maxsize' , 'maxunicode' , 'meta_path' , 'modules' , 'path' ,
'path_hooks' , 'path_importer_cache' , 'platform' , 'prefix' , 'ps1' ,
'setcheckinterval' , 'setdlopenflags' , 'setprofile' , 'setrecursionlimit' ,
'setswitchinterval' , 'settrace' , 'stderr' , 'stdin' , 'stdout' ,
'thread_info' , 'version' , 'version_info' , 'warnoptions' ]
标准模块
Python 本身带着一些标准的模块库
有些模块直接被构建在解析器里,这些虽然不是一些语言内置的功能,但是他却能很高效的使用,甚至是系统级调用也没问题。
这些组件会根据不同的操作系统进行不同形式的配置,比如 winreg 这个模块就只会提供给 Windows 系统。
应该注意到这有一个特别的模块 sys ,它内置在每一个 Python 解析器中。变量 sys.ps1 和 sys.ps2 定义了主提示符和副提示符所对应的字符串:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)