Python - 模块
你好,未来的Python巫师们!今天,我们将开始一段激动人心的旅程,进入Python模块的世界。如果你是编程新手,也不用担心;我会成为你的友好向导,一步一步地解释一切。所以,拿起你的虚拟魔杖(键盘),让我们开始吧!
Python模块
想象一下,你正在建造一座魔法城堡(你的程序)。如果不需要从零开始构建一切,而是可以直接使用预先构建的塔楼、墙壁和门,那岂不是很好?在Python中,模块就是这样的东西——预先写好的代码,你可以轻松地在程序中使用。
Python内置模块
Python自带了一箱宝藏般的内置模块。这些就像你可以立即使用的免费魔法咒语。让我们来试一个!
import random
# 生成1到10之间的随机数
magic_number = random.randint(1, 10)
print(f"你的魔法数字是:{magic_number}")
在这个例子中,我们使用random
模块来生成一个随机数。这就像从帽子中拉出一只兔子,只不过是用数字!
Python用户定义模块
虽然内置模块很棒,但有时你需要创建自己的魔法咒语。这时,用户定义的模块就派上用场了。
创建Python模块
让我们创建一个名为magic_spells.py
的简单模块:
# magic_spells.py
def levitate(object):
return f"{object}正在空中漂浮!"
def disappear(object):
return f"{object}已经消失在空气中!"
现在我们有了自己的模块,其中包含两个魔法函数!
import语句
为了使用我们新创建的模块,我们需要导入它:
import magic_spells
# 使用我们模块中的函数
print(magic_spells.levitate("书"))
print(magic_spells.disappear("兔子"))
输出:
书正在空中漂浮!
兔子已经消失在空气中!
from ... import语句
有时,你只需要从模块中获取特定的咒语。这时from ... import
就很有用了:
from magic_spells import levitate
# 现在我们可以直接使用levitate,而无需magic_spells前缀
print(levitate("椅子"))
输出:
椅子正在空中漂浮!
from...import *语句
如果你想要导入一个模块中的所有咒语,你可以使用from...import *
:
from magic_spells import *
# 现在我们可以直接使用所有函数
print(levitate("桌子"))
print(disappear("帽子"))
但是,要小心使用这个!这就像打开潘多拉的盒子——你可能会不小心覆盖掉具有相同名称的现有函数。
import ... as语句
有时,模块名称可能太长或令人困惑。你可以使用import ... as
给它们起个昵称:
import magic_spells as spells
print(spells.levitate("铅笔"))
定位模块
Python会在几个地方查找模块:
- 当前目录
- PYTHONPATH(如果设置了)
- 依赖于安装的默认目录
PYTHONPATH变量
PYTHONPATH就像一张神奇的地图,告诉Python在哪里可以找到额外的模块。你可以在系统的环境变量中设置它。
命名空间和作用域
将命名空间视为你魔法世界中的不同领域。每个模块都有自己的命名空间,防止具有相似名称的函数或变量之间发生冲突。
模块属性
模块具有特殊的属性。让我们探索一些:
import magic_spells
print(magic_spells.__name__) # 打印模块的名称
print(magic_spells.__file__) # 打印模块的文件路径
__name__属性
__name__
属性很特别。当脚本直接运行时,它是__main__
,当导入时是模块的名称。
# 在magic_spells.py中添加:
if __name__ == "__main__":
print("这个模块正在直接运行")
else:
print("这个模块被导入了")
dir()函数
dir()
函数就像一面神奇的镜子,向你展示模块中定义的所有名称:
import magic_spells
print(dir(magic_spells))
reload()函数
如果你对一个模块进行了更改,并希望在不需要重新启动Python的情况下重新加载它,可以使用reload()
:
from importlib import reload
import magic_spells
# 对magic_spells.py进行更改
reload(magic_spells)
Python中的包
包就像包含多个模块的魔法书。它们只是带有特殊的__init__.py
文件的目录。
以下是我们学到的导入方法的总结表:
方法 | 语法 | 示例 |
---|---|---|
基本导入 | import module_name |
import magic_spells |
从导入 | from module_name import function_name |
from magic_spells import levitate |
导入所有 | from module_name import * |
from magic_spells import * |
导入为别名 | import module_name as alias |
import magic_spells as spells |
就这样,学徒们!你们刚刚学习了Python模块的基础知识。记住,熟能生巧,所以继续尝试不同的模块,并创建你自己的神奇Python世界。编程愉快!
Credits: Image by storyset