Python Tutorial——模块

Python模块用于组织代码,可以通过导入使用。模块可以包含可执行语句和函数定义,首次导入时执行初始化代码。模块搜索路径包括当前目录、PYTHONPATH和默认路径。`__name__`变量用于区分脚本执行和导入。`sys.path`决定模块搜索路径,`dir()`函数列出模块内容。包是多级模块命名空间,使用`__init__.py`文件定义。`from package import *`导入包内所有模块,`__all__`列表可指定导入哪些模块。
摘要由CSDN通过智能技术生成

如果你从Python解释器中退出,并且再次进入,你会发现你以前定义的函数和变量都已经丢失了。所以,如果你想写一个在某种程度上更长的程序,使用一个文本编辑器来准备解释器的输入会使情况有所好转,并且使用文件代替输入来执行它。这就是被熟知的创建一个脚本。随着你的程序变的更长时,你或许想把它分割成几个文件,这样便于维护。你或许想在几个程序里面使用一个常用的函数,而不用把它的定义拷贝到每一个程序里面。

为了支持这些,Python有一个方式来把定义放到一个文件里,并且在一个脚本里或解释器的一个交互实例中使用它们。这样的一个文件叫做模块,一个模块里面的定义可以被导入到其它模块里面或主模块里面(在顶级以计算器方式执行的脚本里面访问的变量集合)。

一个模块就是一个包含Python定义和语句的文件。文件名就是模块名加上后缀.py。在一个模块里面,模块的名字(一个字符串)可以使用全局变量__name__获得。例如,使用你喜爱的文本编辑器在当前的目录里面来创建一个fibo.py的文件,包含一些内容:

然后进入Python解释器,使用下面的命令导入这个模块:

这样做并没有把直接定义在fibo中的函数名称写入到当前符号表里,只是把模块fibo的名字写到了那里。

可以使用模块名称来访问函数:

如果你打算经常使用一个函数,你可以把它赋给一个本地的名称:

6.1 更多有关模块

模块可以包含可执行语句和函数定义。这些语句是打算用来初始化模块的。这些语句只有在模块第一次被导入到其它地方的时候会被执行。

每一个模块有它自己的私有符号表,它被定义在模块里的所有函数用作全局符号表。因此,一个模块的设计者可以在模块里使用全局变量而不用担心会和用户的全局变量产出意外的冲突。换句话来说,如果你知道你正在干什么,你可以触及模块里面的全局变量,使用和以前引用模块函数相同的标记法,modname.itemname。

模块可以引入其它模块。把所有的导入语句放到模块的开始是一种习惯,但不要求非得这样做。被导入模块的名称被放入到引入模块的全局符号表里。

有一个导入语句的变体可以把一个模块里的名称直接导入到另一个模块的符号表里面。例如:

这样不会引入模块的名称,这些导入的内容被放到本地符号表(所以在示例中,fibo没有定义)。

甚至由一个变体可以引入一个模块定义的所有名称:

这将引入所有除了以下划线开头的名称。大多数情况,Python程序员不

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值