黑马程序员技术交流社区

标题: 【上海校区】python的模块和包 [打印本页]

作者: 不二晨    时间: 2019-1-25 09:52
标题: 【上海校区】python的模块和包
1)介绍

为什么要引入模块的概念呢?其实类似于C语言中的头文件,我们为了代码的规范性,可读性和可维护性。我们将完成某个功能的若干个函数放入一个.py文件中,这样还可以避免函数名和变量名的冲突。这就是模块化。再上升一层,将几个完成同一个功能的.py文件放到一个目录下,这就是包(package)的概念。包下面通常有___init___.py这个文件,这个文件其实就是这个包的模块。用于区分普通的文件夹。

注意:

命名python名时要规范,不要中文和特殊符号。
命名前要检测是否冲突,方法是:在交互模式下。输入import abc ,若成功则已经命名过了。
2)使用模块

我们这里用sys模块来编写一个自己的hello模块。示例代码如下:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'a test module'

__author__='quinn lee'

import sys
def test():
    args=sys.argv
    if len(args)==1:
        print ('hello world!')
    elif len(args)==2:
        print('hi,%s!'%args[1])
    else :
        print('Too many arguments!')
if __name__=='__main__':
    test()
这里第一行代表这个.py文件在unix,linux,mac上运行。第二行代表采用UTF-8编码方式编码。

第三行,是文档注释。任何.py文件的第一行字符串,被默认为是文档注释。

第四行,定义一个“__author__”变量。这里你可能要问了,为什么是双下划线?

在python中用双下划线开头双下划线结尾的是一些 Python 的“魔术”对象,如类成员的 __init__、__del__、__add__、__getitem__ 等,以及全局的 __file__、__name__ 等。 Python 官方推荐永远不要将这样的命名方式应用于自己的变量或函数,而是按照文档说明来使用。这里用author是因为这是官方推荐模块模板。所以不用在意,放心用就行。
接下来是重要的:

首先,引入模块“sys”。

然后,定义方法,text()。

接下来,就是对sys模块的引用,如sys.argv。sys中的argv变量用list存储了命令行所有参数。这个列表中,第一个元素就是,模块名,对于我们这个hello模块,第一个元素就是“hello.py”,运行“python3 hello.py quinn lee”获得的sys.argv中的元素就是['hello.py','quinn lee']。在我看来,这个argv是sys模块中的方法。

最后,我们定义了一个’__name__‘标识符,一旦其被置为__main__则执行下面的代码。

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

我们也会碰到这种形式from·······import······,那么这是什么呢?示例代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python3
from random import randint
print(randint(5,10))
输出结果为:

9
很明显,这是用于从某一个模块中引入某个具体的函数(方法),变量。

3)作用域

作用域就是函数和变量的作用范围,通常默认情况下,正常的函数和变量名是公开的(public),可以直接引用。

然后就是刚刚上面提到的前后都是双下划线。有特殊用途的变量,用户不要乱改。这也是public的。

接下来就是前面是单下划线(_xxx)和双下划线(__xxx),这两种是private,不应该直接引用。注意:是不应该而不是不能。

那private变量有什么用?示例代码如下:

def _private_1(name):
    return 'Hello, %s' % name

def _private_2(name):
    return 'Hi, %s' % name

def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)
这里我们将greeting公开,然后把里面的方法用private封装起来,这样我们可以放心调用greeting,不用担心会被干扰。

4)安装第三方模块

第一种方法,直接在命令行模式下,输入

pip install Pillow #最后一个是想用的模块
这样就安装好,Pillow库了,你可能想问。我怎么能知道我想要的库叫什么呢?可以直接到官网或者pypi去搜。

第二种就是安装Anaconda了,我们之前就已经安好了。所以不多说了。

5)添加路径

默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中。我们要添加自己的变量的话,示例代码如下:

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

---------------------
【转载,仅作分享,侵删】
作者:quinn1994
原文:https://blog.csdn.net/quinn1994/article/details/79608086



作者: 不二晨    时间: 2019-2-14 14:57
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2