黑马程序员技术交流社区
标题:
【上海校区】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