zoukankan      html  css  js  c++  java
  • 13.import和from...import

    python import和from...import

    Python语言中import的使用很简单,导入模块(module)和包(package)

    1、python安装路径下的Lib文件夹里的py文件或者package可以直接import导入

    2、非python安装路径下的Lib下面的py文件或者package,顺藤摸瓜

    1.定义:

    模块(module):用来从逻辑(实现一个功能)上组织Python代码(变量、函数、类),本质就是*.py文件。文件是物理上组织方式"module_name.py",模块是逻辑上组织方式"module_name"。

    包(package):定义了一个由模块和子包组成的Python应用程序执行环境,本质就是一个有层次的文件目录结构(必须带有一个__init__.py文件)。

    一、import的基本用法

    2.导入方法

    # 导入一个模块
    import model_name
    # 导入多个模块
    import module_name1,module_name2
    # 导入模块中的指定的属性、方法(不加括号)、类
    from moudule_name import moudule_element [as new_name]

    方法使用别名时,使用"new_name()"调用函数,文件中可以再定义"module_element()"函数。

    3.import本质(路径搜索和搜索路径)

    moudel_name.py

    复制代码
    # -*- coding:utf-8 -*-
    print("This is module_name.py")
    
    name = 'Hello'
    
    def hello():
        print("Hello")
    复制代码

    module_test01.py

    # -*- coding:utf-8 -*-
    import module_name
    
    print("This is module_test01.py")
    print(type(module_name))
    print(module_name)
    运行结果:
    E:PythonImport>python module_test01.py
    This is module_name.py
    This is module_test01.py
    <class 'module'>
    <module 'module_name' from 'E:\PythonImport\module_name.py'>

    在导入模块的时候,模块所在文件夹会自动生成一个__pycache__module_name.cpython-35.pyc文件。

    "import module_name" 的本质是将"module_name.py"中的全部代码加载到内存并赋值给与模块同名的变量写在当前文件中,这个变量的类型是'module';<module 'module_name' from 'E:\PythonImport\module_name.py'>


    module_test02.py

    # -*- coding:utf-8 -*-
    from module_name import name
    
    print(name)
    运行结果;
    E:PythonImport>python module_test02.py
    This is module_name.py
    Hello

    "from module_name import name" 的本质是导入指定的变量或方法到当前文件中。


    package_name / __init__.py

    # -*- coding:utf-8 -*-
    
    print("This is package_name.__init__.py")

    module_test03.py

    # -*- coding:utf-8 -*-
    import package_name
    
    print("This is module_test03.py")
    运行结果:
    E:PythonImport>python module_test03.py
    This is package_name.__init__.py
    This is module_test03.py

    "import package_name"导入包的本质就是执行该包下的__init__.py文件,在执行文件后,会在"package_name"目录下生成一个"__pycache__ / __init__.cpython-35.pyc" 文件。

    package_name / hello.py

    # -*- coding:utf-8 -*-
    
    print("Hello World")

    package_name / __init__.py

    # -*- coding:utf-8 -*-
    # __init__.py文件导入"package_name"中的"hello"模块
    from . import hello
    print("This is package_name.__init__.py")
    运行结果:
    E:PythonImport>python module_test03.py
    Hello World
    This is package_name.__init__.py
    This is module_test03.py

    在模块导入的时候,默认现在当前目录下查找,然后再在系统中查找。系统查找的范围是:sys.path下的所有路径,按顺序查找。

  • 相关阅读:
    智能推荐算法演变及学习笔记(三):CTR预估模型综述
    从中国农业银行“雅典娜杯”数据挖掘大赛看金融行业数据分析与建模方法
    智能推荐算法演变及学习笔记(二):基于图模型的智能推荐(含知识图谱/图神经网络)
    (设计模式专题3)模板方法模式
    (设计模式专题2)策略模式
    (设计模式专题1)为什么要使用设计模式?
    关于macOS上常用操作命令(持续更新)
    记录下关于RabbitMQ常用知识点(持续更新)
    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
    SpringCloud教程二:Ribbon(Finchley版)
  • 原文地址:https://www.cnblogs.com/yangyangchunchun/p/10340979.html
Copyright © 2011-2022 走看看