【python从入门到放弃】3.模块

模块

python中,一个.py文件就称之为一个模块(Module).模块中包含了python对象定义和python语句.
为了避免模块名冲突,python又引入了按目录来组织模块的方法,称之为包(Package)

每一个包目录下面都会有一个__init__.py 的文件,这个文件是必须存在的,否则,python就把这个目录当成普通目录,而不是一个包。init.py 可以是空文件,也可以有 python 代码,因为 init.py 本身就是一个模块,而它的模块名就是 mycompany。

模块是一组 python 代码的集合,可以使用其他模块,也可以被其他模块使用。
模块名要遵循 python 变量命名规范,不要使用中文、特殊字符;
模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,检查方法是在 python 交互环境执行 import abc ,若成功则说明系统存在此模块。

使用模块:
使用模块的第一步,就是导入该模块:import sys
导入 sys 模块后,我们就有了变量 sys 指向该模块,利用 sys 这个变量,就可以访问 sys 模块的所有功能
sys 模块有一个 argv 变量,用 list 存储了命令行的所有参数。 argv 至少有一个元素,因为第一个参数永远是该 .py 文件的名称,例如:
运行 python3 hello.py 获得的 sys.argv 就是[‘hello.py’]

if __name__ == '__main__'
    test()

当我们在命令行运行 hello 模块文件时,python 解释器把一个特殊变量 name 置为 main ,而如果在其他地方导入该 hello 模块时,if 判断将失败,因此,这种 if 测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。

from…import 语句:从模块中导入一个指定的部分到当前命名空间中
例如,导入模块 fib 的 fibonacci 函数:

from lib import fibonacci

这个声明只会把 fib 中的 fibonacci 单个引入到执行这个声明的模块的全局符号表.
当然也可以把一个模块的全部内容导入到当前的命名空间:

from math import *

模块搜索路径:当试图加载一个模块时,python 会在指定的路径下搜索对应的 .py 文件,如果找不到,就会报错
默认情况下,python 解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在 sys 模块的 path 变量中:

import  sys  
sys.path

如果要添加自己的搜索目录,有两种方法:
一是直接修改 sys.path ,添加要搜索的目录:

import sys
sys.path.append('/Users/michael/my_py_scripts')

这种方法是在运行时修改,运行结束后失效

二是设置环境变量 PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置 PATH 环境变量类似。
windows环境下:

set PYTHONPATH=c:\python27\lib;

Linux环境下:

set PYTHONPATH=/usr/local/lib/python

作用域和命名空间

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量希望给别人使用,有的函数和变量希望仅仅在模块内部使用。在 python 中,是通过 _ 前缀来实现的
正常的函数和变量名是公开的(public),可以被直接引用,比如:abc, x123,PI 等
类似 xxx 这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的 author, name jiu是特殊变量, hello 模块定义的文档注释也可以用特殊变量 doc 访问
类似 _xxx 和 __xxx 这样的函数或变量就是非公开的(private),不应该被直接引用,比如 _abc, __abc 等

变量是拥有匹配对象的名字(标识符).命名空间是一个包含了变量名称和他们各自相应对象的字典.如果要给函数内的全局变量赋值,必须使用 global 语句.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值