python-模块-模块导入(五)
1.什么是模块?
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py 。你可以简单的理解成,一个.py文件就是一个模块。
2.模块存在的意义
那些有着相似作用的函数,比如和时间相关的,和文件路径相关的,和系统环境相关的,他们所能处理的问题有着紧密的联系,把他们设计成一个模块,在使用的时候,便于查找,也便于维护。
这就好比,你家里的抽屉,里面存放的物品,大多数情况下都是按类别和用途分层存储的,这样,找物品的时候就比较的方便。
3.模块的引入
模块引入语法:
import module1[, module2[,... moduleN]]
4.模块示例
4.1 自定义一个模块 whiletest.py
#!/usr/bin/python; # coding=utf-8; import random; def gameguess(): numbers = random.randint(20,30); print numbers; #要被猜测的数,方便看到 flag = True; while flag: guess = input("请输入一个数字(20到30)进行猜测(猜中游戏则结束):"); if guess == numbers: print "guess is true"; flag = False; elif guess < numbers: print "输入的数字太小!!!"; else: print "输入的数字太大!!!"; else: print "while循环结束!!!"; print "game over";
4.2 import 引入模块,执行。
#coding=utf-8; import whiletest; whiletest.gameguess();
在调用模块中的函数时,必须这样引用:
模块名.函数名
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。
4.3 from ...import 引入模块函数,执行。
from modname import name1[, name2[, ... nameN]]
4.4 from...import *
把一个模块的所有内容全都导入到当前的命名空间也是可行的.
from modname import *
如下代码所示:
模块代码 modul.py
#coding=utf-8; def firstfunction(): print "I`m first" def secondfunction(): print "I`m second" def lastfunction(): print "I`m last";
引入模块from 模块 import *所有函数
#coding-utf-8; from modul import *; firstfunction(); secondfunction(); lastfunction();
执行结果:
I`m first
I`m second
I`m last
5.搜索路径
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
- 1、当前目录
- 2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
- 3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
6.PYTHONPATH变量
作为环境变量,PYTHONPATH 由装在一个列表里的许多目录组成。PYTHONPATH 的语法和 shell 变量 PATH 的一样。
在 Windows 系统,典型的 PYTHONPATH 如下:
set PYTHONPATH=c:\python27\lib;
在 UNIX 系统,典型的 PYTHONPATH 如下:
set PYTHONPATH=/usr/local/lib/python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通