zoukankan      html  css  js  c++  java
  • Python函数-导入模块的顺序及原理

    一、模块

    什么是模块?

           模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称。

           模块分为三种:

    • 自定义模块
    • 内置标准模块:python自带的
    • 开源模块(第三方)

           导入模块的本质,就是把python文件拿过来执行一次。

    1、import导入

          我有俩文件a.py和b.py,运行b.py,获得a里面得内容:

    name='a.py'
    
    def func():
        print('这个是a.py里面的函数')
    
    for i in range(5):
        print(i)
    func()
    import a   #import一个模块,就是把这个模块里的代码执行一遍

    运行结果:

    0
    1
    2
    3
    4
    这个是a.py里面的函数

    也可起别名:

    name='a.py'
    
    def func():
        print('这个是a.py里面的函数')
    import a as apy  # 起别名
    
    print(apy.name)
    apy.func()

    运行结果:

    a.py
    这个是a.py里面的函数

     2、  if __name__=='__main__'   的运用

           # if __name__=='__main__':#在自己里执行是__name__;在别家执行是a(文件名)

    name = 'a.py'
    def func():
        print('这个是a.py里面的函数')
    
    print(__name__)
    if __name__ == '__main__':  # 在自己里执行是__name__;
        # 在别家执行是a(文件名)
        for i in range(5):
            func()
    import a   
    
    print(a.name)
    a.func()

    运行结果:

    __main__
    这个是a.py里面的函数
    这个是a.py里面的函数
    这个是a.py里面的函数
    这个是a.py里面的函数
    这个是a.py里面的函数
    a
    a.py
    这个是a.py里面的函数

    3、from导入,跟上面一样一样的 

    (1)用from导入func

    name = 'a.py'
    def func():
        print('这个是a.py里面的函数')
    
    print(__name__)
    if __name__ == '__main__':  # 在自己里执行是__name__;
        # 在别家执行是a(文件名)
        for i in range(5):
            func()
    from a import func  # 用from导入func
    
    func()

    运行结果:

    a
    这个是a.py里面的函数

    (2)用from导入func和name

    name = 'a.py'
    def func():
        print('这个是a.py里面的函数')
    
    print(__name__)
    if __name__ == '__main__':  # 在自己里执行是__name__;
        # 在别家执行是a(文件名)
        for i in range(5):
            func()
    from a import func, name  # 用from导入func和name
    
    func()
    print(name)

    运行结果:

    a
    这个是a.py里面的函数
    a.py

    二、导入模块的顺序:
           1、从当前目录下找
           2、从python的环境变量里面找
                import一个文件夹的时候,就是执行这个文件夹下面的__init__.py

    import sys
    
    print(sys.path)  # 环境变量
    sys.path.append(r'C:Users79954PycharmProjectssszday5')  # r 源字符  加环境变量,加的时目录
    sys.path.insert(0, r'C:Users79954PycharmProjectssszday5')  # insert指定位置

    运行结果:

    ['C:\Users\79954\PycharmProjects\ssz\day5', 'C:\Users\79954\PycharmProjects\ssz', 'C:\Program Files\JetBrains\PyCharm 2020.1.4\plugins\python\helpers\pycharm_display', 'C:\Users\79954\AppData\Local\Programs\Python\Python37-32\python37.zip', 'C:\Users\79954\AppData\Local\Programs\Python\Python37-32\DLLs', 'C:\Users\79954\AppData\Local\Programs\Python\Python37-32\lib', 'C:\Users\79954\AppData\Local\Programs\Python\Python37-32', 'C:\Users\79954\AppData\Local\Programs\Python\Python37-32\lib\site-packages', 'C:\Program Files\JetBrains\PyCharm 2020.1.4\plugins\python\helpers\pycharm_matplotlib_backend', 'C:\Users\79954\PycharmProjects\ssz\day5']

         如以上运行结果所示:Pycharm也会自动帮咱加了环境,所以我们就可以导入ssz这个目录下的任何目录及文件了:

    一个例子:

    from day5 import tools    #我们就可以导入ssz下的任何一个目录,pycharm会有提示
    print(tools.test('s'))
    def test(s):
        return s + 'hhhhhhh'

    运行结果:

    shhhhhhh

    再来一个例子:

    from day2 import HelloWold

    运行结果:

    hello word!
    蔡蔡长得非常 "帅气、高大威猛"
    let'go,昌姐美丽又漂亮,因为是个“人妖”!!!

    导入目录其他方式:

    import sys
    
    # import day5
    # result = day5.tools.test('ggg')  # 报错(AttributeError: module 'day5' has no attribute 'tools')
    
    from day5 import tools  # 这种方式没问题
    print(tools.test('ggg'))
    
    from day5.tools import test  # 这种方式没问题
    result = test('ggg')
    print(result)
    def test(s):
        return s + 'hhhhhhh'

    运行结果:

    ggghhhhhhh
    ggghhhhhhh

    例子:

    1,在day6目录下建一个__init__.py,写点内容(一般创建文件夹自带了)
    2,在day5目录下的a.py里面import day5
    __init__
    结果:  import 一个文件夹时,就是执行这个文件夹下的__init__.py

    1)、我们首先在day6下建一个tools.py

    def test(s):
        return s + 'hhhhhhh'
    def test2():
        print('ooooo')

    2)然后在day5文件下建目录文件.py

    import day6
    result = day6.tools.test('xxx')
    day6.tools.test2()  #可多个导入
    print(result)

    运行结果:

    __init__
    ooooo
    xxxhhhhhhh

    三、第三方模块安装:

    •   python的安装目录
    •   python安装目录下面的scripts目录

    首先,得确定环境是否正常(pip --help):

     1、手动安装

    2、带 .whl 结尾的需找到安装路径:pip install /Users/........

    3、zip文件

    • 先解压
    • 进入解压目录
    • python setup.py install
  • 相关阅读:
    设计模式-1-概要(c#版)
    UML图示说明
    阿里云SLB双机IIS多站点负载均衡部署笔记
    阿里云分布式关系数据库DRDS笔记
    一些小经验
    NOSQL场景梳理
    内核linux-3.4.2支持dm9000
    构建根文件系统
    u-boot-1.1.6移植之dm9000
    移植u-boot-1.1.6(原创)
  • 原文地址:https://www.cnblogs.com/ccxm/p/12859065.html
Copyright © 2011-2022 走看看