模块

在一个文件中的代码越长,文件的可维护性就越差。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样每个文件包含的代码就相对较少。在Python中每一个.py文件称为一个Module。
使用Module的优点:
1.最大的好处是大大提高了代码的可维护性。
2.使用模块还可以避免函数名和变量名冲突(只要注意不要与Python的内置函数名冲突)
为了避免由于Module的名字相同导致冲突所以引入了package的概念------通过package来组织Module。引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。每一个包目录下面都会有一个init.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。init.py可以是空文件,也可以有Python代码,因为init.py本身就是一个模块。

使用Module

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module ' #任何模块代码的第一个字符串都被视为模块的文档注释

__author__ = 'Michael Liao' #瞻仰作者大名

import sys

def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')
#注意这两行代码当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。
if __name__=='__main__':
    test()

作用域

有的函数或变量我们仅仅希望在Module内部使用,在Python中华通过前缀_实现。
正常的函数和变量名是公开的(public),可以被直接引用;类似xxx这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的authorname就是特殊变量;类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等。
外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。

安装第三方Module

Python中安装第三方Module是通过包管理工具pip完成的。注意区别pip和pip3.

pip install Pillow

安装常用的模块请直接anaconda。

Module搜索路径

#当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错
>>> import mymodule
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named mymodule

默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中

>>> import sys
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', ..., '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']

增加搜索目录

#方法一:在运行时修改,运行结束后失效。
>>> import sys
>>> sys.path.append('/Users/michael/my_py_scripts')

#方法二:设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 模块简介 在软件开发过程中,随着代码的不断增加,在一个问价里代码就会越来越长,不容易维护。为了编写可维护的代码,我...
    齐天大圣李圣杰阅读 4,243评论 0 0
  • 1.1Python中的模块介绍和使用 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#...
    TENG书阅读 3,177评论 0 0
  • 前言 之前的文章都是使用Sublime Text来编写 Python 的,主要是为了更好的熟悉和了解 Python...
    GitHubClub阅读 4,572评论 2 6
  • 在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Pyth...
    一只写程序的猿阅读 9,426评论 0 3
  • 从清晨凉风到浩瀚星空 从繁花盛开到末世凋零 从乌云压城到雨后彩虹 从牙牙学语到老态龙钟 这一路风景 寂寞无声 可否...
    沈安乐阅读 818评论 2 4

友情链接更多精彩内容