zoukankan      html  css  js  c++  java
  • Python学习笔记(二十)—模块的导入

    一、模块介绍

    Python 提供了强大的模块支持,主要体现在Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率。

    那么,模块到底指的是什么呢?模块,英文为 Modules,用一句话总结:模块就是 Python 程序。换句话说,任何 Python 程序都可以作为模块。

    模块可以比作一盒积木,通过它可以拼出多种主题的玩具,这与前面介绍的函数不同,一个函数仅相当于一块积木,而一个模块(.py 文件)中可以包含多个函数,也就是很多积木。所以模块和函数的关系如图 1 所示。

     使用模块的好处:体现在提高代码的可重用性,当编写好一个模块后,只要编程过程中需要用到该模块中的某个功能(由变量、函数、类实现),无需做重复性的编写工作,直接在程序中导入该模块即可使用该功能。模块,可以理解为是对代码更高级的封装,即把能够实现某一特定功能的代码编写在同一个 .py 文件中,并将其作为一个独立的模块,这样既可以方便其它程序或脚本导入并使用,同时还能有效避免函数名和变量名发生冲突。

    二、导入模块的实质

    导入模块的语法格式:

    1、import 模块名1 [as 别名1], 模块名2 [as 别名2],…:使用这种语法格式的 import 语句,会导入指定模块中的所有成员(包括变量、函数、类等)。不仅如此,当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。

    2、from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…: 使用这种语法格式的 import 语句,只会导入模块中指定的成员,而不是全部成员。同时,当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。

    导入模块的实质:就是把导入的Python文件从头到尾执行一次。

    举个例子:在同一目录下创建Model1.py和model2.py两个文件,内容如下:

    model.py:

    name = 'model1'
    def f1():
        print('我是model1文件里面的f1')
    print('我是model1文件里面的print')
    
    #创建一个文件,并写入内容
    f = open('test.txt','w')
    f.write('我是model1模块文件里面写入的内容')
    f.close()
    print('脚本执行完毕!')

    model2.py

    import model1 as m1
    m1.f1()  #调用model.py文件中的f1方法
    print(m1.name)  #调用model.py文件中的name变量
    
    执行结果:
    我是model1文件里面的print
    脚本执行完毕!
    我是model1文件里面的f1
    model1

    注意:模块命名时尽量不要使用系统已经定义的函数名称。否则在导入模块的时候系统会报错。比如在当前目录下创建random.py文件,然后在model2.py中import  random模块并应用,这个时候会报如下错误:

    import random
    print(random.randint(1,9)) 
    
    运行结果:
    AttributeError: module 'random' has no attribute 'randint'

    运行出现了错误。原因是在于Python在导入模块后,使用时寻找模块的顺序出现问题导致。那么究竟是怎么回事呢?下面就来说说导入模块后寻找模块的顺序

    三、导入模块后寻找的顺序

      1、先从当前目录下寻找是否有这个模块。

      2、如果当前路径下没有,则去环境变量中查找这个模块。(这里的环境变量不是系统的环境变量,而是Python自己的环境变量)

    到此可能有人会提出疑问,在同一路径下不是有random模块吗?为什么还会报错呢?这是因为在本目录下虽然定义了random模块,但是在掉用模块中的方法的时候去当前目录查找,没有randinit方法,所以就出现了如上错误。

    四、环境变量的查看及添加

    1、查看Python自己的环境变量,首先需要导入sys模块;具体如下:

    import sys
    print(sys.path) #打印python的环境变量目录

    这样就能看到Python的环境变量值。

    2、将模块加入到环境变量中

    2.1 方法一:将需要导入的模块收到加入到环境变量中。

      1、首先通过sys.path查找Python的环境变量值

      2、然后将*.py模块放入对应Python环境变量,路径中的任何一个路劲下放即可

    2.2 方法二:将导入模块路径,临时加入到Python编辑中

      1、导入sys模块

      2、执行sys.path.append(r'c:xxxxxx')  #将路径加入到Python环境变量中去

      注意:临时生效,将路径加入都Python环境变量的末尾,一旦重新打开工具或者Python端即失效

    import sys
    print(sys.path) #打印python的环境变量目录
    sys.path.append(r'G:xxxProject	ext') #临时生效,将路径加入都Python环境变量的末尾
    print(sys.path) #打印python的环境变量目录

    2.3 方法三:将导入模块路径,永久加入环境变量

      1、导入sys模块

      2、执行sys.path.insert(0,r'c:xxxxxx')  #将变量加入环境变量;里面第一个参数是加入到环境变量中的那个位置(下标值),第二个参数是要加入的模块路径

    import sys
    print(sys.path) #打印python的环境变量目录
    sys.path.insert(0,r'G:codeProject	ext') #将变量加入环境变量的开头,避免查询所有 的环境变量

    2.4 方法四:使用pycharm工具来加环境变量

      1、选择要加入模块的文件,右击>选择Mark Direc as>Sources Root 即可将文件加入Python的环境变量中

      2、 如果取消的话,同样选择文件右击>选择Mark Direc as>unmark as Sources root

    注意:如果A模块和B模块在同一目录下,那么A模块导入B模块直接:import B即可。如果A模块和B模块在不同路径下放,那么在导入的时候需要先将B模块加入到Python的环境变量中去,这样导入才不会出错。

  • 相关阅读:
    Java--强制转化
    Java--成绩分类
    建造者模式的应用
    抽象工厂模式的应用
    工厂模式
    第几天
    Stacking Plates(存档待续.....(没有写思路和程序))
    圆的面积
    公孙策和陆湘湘对话(少年包青天第二部第二十集末尾和第二十一集开头部分)
    简单接口回调例子
  • 原文地址:https://www.cnblogs.com/beginner-boy/p/12585228.html
Copyright © 2011-2022 走看看