Python - 模块

你好,未来的Python巫师们!今天,我们将开始一段激动人心的旅程,进入Python模块的世界。如果你是编程新手,也不用担心;我会成为你的友好向导,一步一步地解释一切。所以,拿起你的虚拟魔杖(键盘),让我们开始吧!

Python - Modules

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会在几个地方查找模块:

  1. 当前目录
  2. PYTHONPATH(如果设置了)
  3. 依赖于安装的默认目录

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