Python模块

目录

一 介绍

二 导入

1 搜索路径

2 import

3 from…import

4 reload

三 标准库

1 dir() 

四 包

一 介绍

    随着程序越来越长,为 了方便维护,最好把脚本拆分成多个文件。编写脚本还一个好处,不同程序调用同一个函数时,不用每次把函数复制到各个程序。    
    Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块让你能够有逻辑地组织你的 Python 代码段。 把相关的代码分配到一个模块里能让你的代码更好用,更易懂。 模块能定义函数,类和变量,模块里也能包含可执行的代码。
    通过全局变量 __name__ 可以获取模块名

二 导入

1 搜索路径

  1. 当前目录
  2. 如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
  3. 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
  4. 模块包每个__init__.py文件
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

2 import

模块定义好后,我们可以使用 import 语句来引入模块
语法
import module1[, module2[,... moduleN]
示例:
# 导入模块 
import support 

# 现在可以调用模块里包含的函数了 
support.print_func("Runoob")

# 获取模块名
if __name__ == "__main__":
    import sys
    fib(int(sys.argv[1]))
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。

from…import

from 语句让你从模块中导入一个指定的部分内容(变量,方法,类)到当前命名空间中
语法
from modname import name1[, name2[, ... nameN]]
示例:
# 导入模块 fib 的 fibonacci 函数
from fib import fibonacci

# 把一个模块的所有内容全都导入到当前的命名空间,这种声明不该被过多地使用。
from math import *

4 reload

当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。如果你想重新执行模块里顶层部分的代码,可以用 reload() 函数。该函数会重新导入之前导入过的模块。
reload(module_name)

# 示例
from importlib import reload
from sound.formats import echo
reload(echo)

三 标准库

Python中有很多标准库,
有些模块直接被构建在解析器里,这些虽然不是一些语言内置的功能,但是他却能很高效的使用,甚至是系统级调用也没问题。
这些组件会根据不同的操作系统进行不同形式的配置,比如 winreg 这个模块就只会提供给 Windows 系统。
应该注意到这有一个特别的模块 sys ,它内置在每一个 Python 解析器中。变量 sys.ps1 和 sys.ps2 定义了主提示符和副提示符所对应的字符串:

1 dir() 

该函数一个排好序的字符串列表,内容是一个模块里定义过的名字。
import fibo, sys
dir()      # 当前模块
dir(fibo)  # 指定模块 ['__name__', 'fib', 'fib2']
dir(sys)   # ['__displayhook__', '__doc__', '__excepthook__', '__loader__', '__name__']

四 包

包是一种用“点式模块名”,模块命名空间的方法,与java与c#的包形式
Python (巨蟒) 只把含 __init__.py 文件的目录当成包
__init__.py 可以是一个空文件,该文件也可以执行包的初始化代码,或设置 __all__ 变量,详见下文。
示例 main.py
# 导入单个包 as 重命模块名
import sound.formats.echo as echo
echo.e("你好")

# 导入指定内容
from sound.effects.echo import e
__init__.py 文件
__all__ = ["echo", "surround"]

# 进行 import * 时只会导入echo,surround文件,如果不定义__all__则会把文件下所有模块导入
from sound.formats import *
echo.e("你好")

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值