zoukankan      html  css  js  c++  java
  • python | 模块与第三方库的安装

     

    1 模块

    1.1 模块的定义

    在编程语言中,代码块 >> 函数 >> 类 >> 模块 >> 包(库),是逐级封装,层层调用的关系。在Python中,一个.py文件就是一个模块,模块是比类更高一级的封装。

    • 代码块:小至一行代码,大到一个模块,一个函数……都是代码块,此处指一行代码
    • 函数:函数是指封装好、能复用,用来实现单一特定功能的代码块
    • 类:类是数据类型概念的发展,用来描述相似对象的共性,对象所属的数据类型就是“类”
    • 模块:一个.py文件就是一个模块,包含定义好的函数和变量。分为自定义模块、内置模块和第三方模块
    • 包:包是以目录形式存在的模块集合,类似于包含__init__.py文件的文件夹,它包含__init__.py文件、子包及多个模块。包是比模块高一级的封装
    • 库:具有相关功能包的集合。分为标准库、第三方库以及自定义模块

    特别说明:模块、包、库三者其实都是模块,只不过是个体和集合的区别,是对模块的不同组织方式。库和包的关系,类似于类与对象,库是抽象的,包是具体的。

     
    自定义模块就是你自己编写的模块,如果你在网上发布自己的模块并允许他人使用,那么就变成了第三方模块,内置模块是python安装包自带的模块。使用模块的好处又很多,比如:

    • 可维护性:提高了代码的可维护性
    • 可复用性:编写代码不必从零开始。当一个模块编写完毕,就可以被其他的模块引用,不用重复造轮子
    • 可区分性:使用模块还可以避免类名、函数名和变量名发生冲突。相同名字的类、函数和变量完全可以分别存在不同的模块中。但是也要注意尽量不要与内置函数名(类名)冲突

     

    1.2 模块的导入

    假设已经定义好一个模块module_a,它包含add1函数,则导入方法如下。

     

    1.2.1 import 导入

    语法 示例 函数调用
    import 模块1 [,模块2,...] import module_a module_a.add1()
    import ... as ... import module_a as md md.add1()

     

    1.2.2 from import 导入

    语法 示例 函数调用
    from ... import 函数1 [,函数2,...] from module_a improt add1 add1()
    from ... import ... as ... from module_a improt add1 as ad ad()
    from ... import * from numpy import * add1()

    模块的导入,具体哪种方法更好没有统一规定,只要根据自己使用习惯,注意导入时别发生命名冲突即可。

     

    2 程序入口

    如C、C++等语言都有一个main函数作为程序的入口,main去调用函数库,函数库之间不能相互调用(如下图A和B之间),即程序的运行是从main函数开始。而python是脚本语言,没有统一入口,函数库之间可以互相调用。

    所以,python代码执行有两种情况:

    • 情况1:直接作为脚本执行,即直接运行该模块
    • 情况2:先import到其他python模块中再调用执行(模块重用),其实就是「第三方库」。

    而python通过if__name__ == 'main' : 语句,控制这两种不同情况下的代码执行。

     

    2.1 模拟入口

    基于python代码执行机理,可用if__name__ == 'main' : 语句模拟程序入口,实现对python代码执行的控制。

    • 以脚本直接执行时,if__name__ == 'main': 后面语句会执行(该语句多为函数正确性验证语句)
    • 被import到其他模块中执行时,if__name__ == 'main': 后面语句不会执行
    # 直接作为脚本执行
    def add1(x):
        x = x+2
        return x
    add1(10)
    
    # 模块重用执行
    import os
    os.chdir('D:\data\python_file') 
    from addx import add1
    add1(9)
    

    所以,想运行以脚本直接执行时才执行的命令时,可以将这些命令语句放在if__name__ == 'main': 判断语句之后:

    # 自定义一个函数add1
    def add1(a):
        a=a+1
        return a
    print(__name__)
    
    if __name__ == "__main__":       # 脚本直接执行时,运行后面的语句;被import执行时,不运行后面的语句
        print(add1(2))               # 函数正确性验证和测试
    

     

    3 库

    库是具有相关功能包(模块)的集合。分为标准库、第三方库以及自定义模块。下面着重介绍python第三方库的安装

     

    3.1 pip安装

    在安装好Anconda后,打开Anconda Prompt,用以下指令就可以进行安装、卸载、查看等操作。

    语法 描述
    pip install … 安装
    pip uninstall … 卸载
    pip download … 下载
    pip list 查看安装列表

     

    3.2 文件安装

    若遇到pip安装失败,可考虑使用文件安装,具体操作步骤如下:

    • 打开网页,找到正确的待安装库(注意windows位数和库版本号)

    • 左击文件下载待安装库

    • 管理员身份运行Anaconda Prompt,输入pip install 安装库文件的路径 + 安装库的名称,最后回车运行。如:C:UsersAdministratorakima-2019.1.1-cp34-cp34m-win32.whl

     
    文件下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ ,网站包含很多Windows环境下可直接安装的第三方库文件。如:akima-2019.1.1-cp34-cp34m-win32.whl,akima是库名称;2019.1.1是库版本号;cp34指python版本号

     

    3.3 自定义安装

    安装第三方库提供的安装方式和步骤进行,优先级最低。

    安装好后,在python的代码或交互环境里导入相应库,如import numpy,看看有无报错即可判断是否安装成功。

  • 相关阅读:
    A Survey of Machine Learning Techniques Applied to Software Defined Networking (SDN): Research Issues and Challenges
    A Deep Learning Based DDoS Detection System in Software-Defined Networking (SDN)
    解决win10 USB转串口无法使用
    Feeder-Link Outage Prediction Algorithms for SDN-based High-Throughput Satellite
    Flow monitoring in Software-Defined Networks
    Refining Network Intents for Self-Driving Networks
    2020生活变化
    【转载】 图解最小堆形成-以数组方式表示
    福大软工 · 最终作业
    福大软工 · 第十二次作业
  • 原文地址:https://www.cnblogs.com/1k-yang/p/12597529.html
Copyright © 2011-2022 走看看