Python学习(五)—— 模块

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/q1449516487/article/details/86571102

一、模块和包

在Python中有模块和包的概念:

模块

一个.py文件就是一个模块(Module)

模块的命名规则:

(1)遵循Python变量命名规范,不要使用中文、特殊字符。

(2)模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,检查方法是在Python交互环境执行import abc,若成功则说明系统存在此模块。

定义包(Package)是为了解决模块命名冲突的问题。包也可以理解为目录,即将模块放置于不同的目录中,目录我们可以任意定义。每一个目录下必须包含__init__.py文件,该文件可为空,也可以包含代码。

目录示意图如下:

mycompany            //顶层目录
 ├─ web              //次级目录
 │  ├─ __init__.py   
 │  ├─ utils.py
 │  └─ www.py
 ├─ __init__.py      
 ├─ abc.py
 └─ xyz.py

二、使用模块

1.Python模块的标准文件模板:

#!/usr/bin/env python3                 //允许该文件在Unix/Linux/Mac上运行
# -*- coding: utf-8 -*-                //表示.py文件本身使用标准UTF-8编码

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

__author__ = 'Michael Liao'            //使用__author__变量表示作者名字

import sys                             //导入sys模块

def test():
    args = sys.argv                    //sys模块的argv变量,用list存储了命令行的所有参数
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':               //当我们在命令行运行该模块文件时,Python接收器把一个特殊变变量__name__置为__main__,而如果在其他地方导入该模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时可执行一些而外的代码,最常见的就是运行测试
    test()

2.作用域:

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用(public属性),有的函数和变量我们希望仅仅在模块内部使用(private属性)。在Python中,是通过_前缀来实现的。

实际上,Python并没有一种方法可以完全限制访问private函数或变量,而是约定熟成的:

类型 例子
public

(1)正常变量:abc、x123、PI...

扫描二维码关注公众号,回复: 5368554 查看本文章

(2)特殊变量:__author__、__name__、__doc__...

private

内部变量形如_xxx__xxx:_abc、__abc

三、安装第三方模块

1.安装第三方模块的方法

(1)第一种方法:pip

首先确保系统上已经安装了pip包管理工具。如果你使用的是Max或Linux,系统本身自带了pip;如果你使用的是Windows系统,在安装Python时将pipAdd python.exe to Path勾选上。

pip命令格式如下:(在cmd窗口中键入)

命令 含义
pip 显示pip所有的参数使用方法
where pip 查询pip的安装路径
pip -V 查看pip的版本号
pip list 查看已经安装的第三方库
pip install 库名(=版本号) 安装第三方库
pip show 库名 查看安装库的详细信息
pip uninstall 库名 卸载第三方库
python -m pip uninstall pip 卸载pip

(2)第二种方法:Anaconda

Anaconda是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库。

在官网https://www.anaconda.com/上下载并直接安装,Anaconda会把系统Path中的python指向自己自带的Python,并且Anaconda安装的第三方模块会安装在Anaconda自己的路径下,不影响系统已安装的Python目录。

安装好Anaconda后,重新打开cmd窗口,输入python,可以看到Anaconda的信息:

                        ┌────────────────────────────────────────────────────────┐
                        │Command Prompt - python                           - □ x │
                        ├────────────────────────────────────────────────────────┤
                        │Microsoft Windows [Version 10.0.0]                      │
                        │(c) 2015 Microsoft Corporation. All rights reserved.    │
                        │                                                        │
                        │C:\> python                                             │
                        │Python 3.6.3 |Anaconda, Inc.| ... on win32              │
                        │Type "help", ... for more information.                  │
                        │>>> import numpy                                        │
                        │>>> _                                                   │
                        │                                                        │
                        │                                                        │
                        │                                                        │
                        └────────────────────────────────────────────────────────┘

可以尝试直接import numpy等已安装的第三方模块。

2.模块搜索路径

(1)查看模块搜索路径

当我们加载一个模块时,默认情况下,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 mymodule
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named mymodule

(2)添加模块搜索路径:两种方法

第一种方法是直接修改sys.path,添加要搜索的目录:(这种方法是在运行时修改,运行结束后失效

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

第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式和设置Path环境变量类似。注意只需要添加自己的搜索路径,Python自己本身的搜索路径不受影响。

猜你喜欢

转载自blog.csdn.net/q1449516487/article/details/86571102