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下的所有路径,按顺序查找。

  • 相关阅读:
    Jquery 图片预览插件 imgPreview
    对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)
    JavaScript拖拽实现(附注释),最经典!最简单!短小精悍!
    如何使用VC++写一个小程序来检测.NetFrameWork版本
    利用TreeView实现C#工具箱效果
    JavaScript中json对象和string对象之间的转化
    Ubuntu Server上搭建可用于生产环境的ASP.NET服务器
    winexec()函数的参数说明(c++)
    C#对文件夹的判断、创建、移动、删除
    C#程序不用安装.NET环境运行(让C#程序脱离.net框架)
  • 原文地址:https://www.cnblogs.com/yangyangchunchun/p/10340979.html
Copyright © 2011-2022 走看看