• 第15课 模块与包


    一、同一包里面模块的调用

    1、模块的概念

    1)一般的行数--500到800行

    2)一个xxx.py文件就称为一个模块(module)

    2、模块化的其他好处

    1)以库的形式封装功能,方便给别的代码调用。

      a、库其实就是模块和包

      b、可以使用自己写的库,python标准库和第三方库

    2)避免变量名冲突(包括函数名)

      a、如果一个代码文件特别大,变量名就容易发生重复。这时,需要定义不同的变量名和函数名

      b、如果采用模块分割代码,每个模块文件代码都不是很多,就可以缓解这个问题

      c、每个模块中变量名的作用域只在本模块中

    3、模块的使用

    1)同一个包里面的模块调用:import 模块名---执行模块

    import mathFunction  # 导入模块名
    
    
    
    #  执行结果
    
    ******begin mathFunction!******
    ******end  mathFunction!******

    2)函数/变量的调用---模块名.函数

    import mathFunction  # 导入模块名
    mathFunction.sumFun(1, 2)
    
    
    # 执行结果
    ******begin mathFunction!******
    ******end  mathFunction!******
    1 + 2 = 3

    3)from 模块名 import 函数名/变量

    from mathFunction import sumFun
    sumFun(1, 2)
    
    
    # 执行结果
    
    ******begin mathFunction!******
    ******end  mathFunction!******
    1 + 2 = 3

    4)导入多个函数/变量(这个方法只作为了解)

    from mathFunction import sumFun, VERSION, difFun
    sumFun(1, 2)
    print(VERSION)
    difFun(9, 3)
    
    
    
    # 执行结果
    
    ******begin mathFunction!******
    ******end  mathFunction!******
    1 + 2 = 3
    1.0
    9 - 3 = 6

    5)全部导入:import 模块名 == from 模块 import 

    from mathFunction import *
    sumFun(58, 69)
    difFun(108, 36)
    
    
    # 执行结果
    ******begin mathFunction!******
    ******end  mathFunction!******
    58 + 69 = 127
    108 - 36 = 72

    6)导入多个模块:import module1, module2   或者如下:

    import 模块1

    import 模块2

    from mathFunction import sumFun
    import lib1
    
    sumFun(12, 13)
    
    
    # 执行结果
    ******begin mathFunction!******
    ******end  mathFunction!******
    ******lib1*******
    12 + 13 = 25

    4、导入函数或者变量取别名:from lib2 import sumFunc as blibF

    1)as---取别名     好处:避免冲突、长名字缩短

    from lib2 import sumFun as blibF
    from mathFunction import sumFun as mathF
    
    blibF(2, 5)
    mathF(3, 8)
    
    
    # 执行结果
    
    ******lib2_begin******
    ******end******
    ******begin mathFunction!******
    ******end  mathFunction!******
    2 + 5 + 5 = 12
    3 + 8 = 11

    二、不同包里面模块的调用

    1、把许多模块按照功能放到不同的目录中来组织模块,这些存放模块文件的目录称之为包(package)。

    2、import 包名.模块名

    3、只要去导入这个包,对应的__init__.py会被执行

    import sys
    sys.path.append('D:workHelloWorldsongqinpython')  # 一定要添加环境变量
    import newP.newPTest
    newP.newPTest.newP()
    
    
    # 执行结果
    
    
    I am newPtest.__init__.py
    *********newPTest*********
    newPFun!

    4、包里面包含子包的导入方法

    import sys
    sys.path.append('D:workHelloWorldsongqinpython')
    import newP.sonP.sonPTest
    newP.sonP.sonPTest.sonP()
    
    
    
    # 执行结果
    
    I am newPtest.__init__.py
    ---sonPTest---
    HelloPython!

    对于比较长的导包,使用别名,更方便。

    import sys
    sys.path.append('D:workHelloWorldsongqinpython')
    import newP.sonP.sonPTest as newPp  # 对于比较长的导包,最好用别名
    newPp.sonP()
    
    
    # 执行结果
    I am newPtest.__init__.py
    ---sonPTest---
    HelloPython!

    三、联合使用

    1、标准库:python安装包里面提供的功能模块和包。主要包括:

    1)内置类型和函数。比如len()、int()、open()等,可以直接使用,不用import。

    2)功能模块:包含程序设计所需的常用的功能;需要用import导入它们就可以使用

    import time
    print(time.strftime('%Y_%m_%d %H:%M:%S'))  # 获取系统当前时间
    
    # 执行结果
    
    2018_12_09 23:49:25

    2、模块的搜索规则:

    1)import sys----sys.path:解释器加载的路径

    >>> import sys
    >>> sys.path
    ['', 'E:\software\python\Lib\idlelib',   'E:\software\python\python36.zip', 'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages']
    
    # 'E'前面的空格,意思为当前目录

    3、增加模块路径

    1)cmd----set PYTHONPATH=F:;G:---最终到sys.path里面

    >>> import sys
    >>> sys.path
    ['', 'E:\software\python\python36.zip',  'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages']
    >>> ^Z
    
    
    C:Users62588>set PYTHONPATH=F:
    
    C:Users62588>python
    Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys
    >>> sys.path
    ['', 'F:\', 'E:\software\python\python36.zip', 'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages']
    
    # 原来环境变量只有E盘,后来通过set PYTHONPATH=F:,添加F盘

    2)sys.path.append('路径')-----临时增加

    import sys
    print(sys.path)
    
    
    #执行结果
    ['D:\software\HelloWorld\songqin\python\lesson18 模块与包_使用库', 'D:\software\HelloWorld', 'E:\software\python\python36.zip', 'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages', 'D:\software\pycharm\helpers\pycharm_matplotlib_backend']

    添加环境变量

    sys.path.append('E:\') # 这里写两个,是为了防止第一个被转义
    print(sys.path)
    
    
    #执行结果,尾部添加了E盘
    ['D:\software\HelloWorld\songqin\python\lesson18 模块与包_使用库', 'D:\software\HelloWorld', 'E:\software\python\python36.zip', 'E:\software\python\DLLs', 'E:\software\python\lib', 'E:\software\python', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\win32\lib', 'C:\Users\62588\AppData\Roaming\Python\Python36\site-packages\Pythonwin', 'E:\software\python\lib\site-packages', 'D:\software\pycharm\helpers\pycharm_matplotlib_backend', 'E:\']

    3)pip下载第三方库---lib或者lib/site-package

    4)pip安装源--默认国外 ,可以修改为国内的安装源,比如豆瓣。

    5)卸载---pip uninstall selenium

    6)升级--举例:升级pip---pip install upgrade pip或者 pip install -u pip

    7)升级指定的版本:pip install SomePackage == 1.0.4  ;   pip install SomePackage >= 1.0.4

  • 相关阅读:
    软件逆向——软件壳特点总结
    OD调试4----去除nag窗口的几种方法
    OD调试3--获取使用执照
    OD调试2----破解序列号验证程序
    OD调试初步概念——修改窗口标题
    Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 11 Pointer Analysis Context Sensitivity
    Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 08 Pointer Analysis && 09 Pointer Analysis Foundations (I)
    Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 07 Interprocedural Analysis
    Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 05 Data Flow Analysis
    Proj THUDBFuzz Paper Reading: 南京大学软件分析课程2020, 03 Data Flow Analysis
  • 原文地址:https://www.cnblogs.com/nick1998/p/10091323.html
Copyright © 2020-2023  润新知