zoukankan      html  css  js  c++  java
  • day20.import

    一、import引入

    # import语句可以在程序中任意位置使用,为了防止重复导入模块,第一次导入后就将模块名加载到内存了,
    # 后面的import语句仅仅对已经加载到内存的模块对象增加一次引用,不会重新执行模块内的语句
    import time
    # 只是第一次导入时才执行 time.py 代码,
    import time
    import time
    import time

    1、添加任意路径下的模块

    把路径添加到系统环境变量path当中,
    执行命令时,系统会自动按照路径找到模块,从而引入
    如果找不到当前模块所在的路径,直接报错
    
    将自定义绝对路径添加至sys.path中:

    二、from ... import ...

    from time import thread_time

    三、from ...  import *

    # 把time中所有的不是以下划线开头的名字都导入到当前.py文件
    from time import  *

    四、为模块起别名

    import time as T
    print(T.time())

    五、__all__ 可以设置导入的范围

    __all__ = ["leader","staff"]
    leader = "Lsir"
    staff = "Zsir"
    def task1():
        taskone="{} asked {} to type a document".format(leader,staff)
        print(taskone)
    def task2():
        tasktwo="{} asked {} to implement a functional module".format(leader,staff)
        print(tasktwo)
    class MyClass():
        name = "yuemo"
    import sys
    sys.path.append("/Users/atsukokoshi/Desktop")
    from Ctmmodule import *
    print(leader)
    task1()
    # 报错:task1 未定义

    六、魔术属性的使用

    # 如果当前文件是直接运行的,返回__main__
    # 如果当前文件是间接导入的,返回当前文件名(模块名)
    # 文件直接被执行的时候返回__main__
    
    # 当成模块被导入的时候,返回模块名本身;

    七、包

    # 1.文件就是模块,文件夹就是包
    # 2.__init__.py 对包(文件夹)进行初始化的脚本文件
        # 导入包的时候,系统自动调用__init__.py文件,把init文件里面成员进行导入
    # 3.可以通过__init__间接导入其他模块
    __all__ = ["ceshi301"]
    
    
    ceshi301 = 301
    ceshi302 = 302
    
    # 通过初始化__init__文件间接导入
    from package1 import mypath
    目录package1
    def join():
        print("我是join函数")
        
    def getsize():
        print("我是getsize函数")
    mypath.py
    import package1
    print(package1.ceshi301)
    # """
    # 2.导入包下的某些模块
    # 方法一
    """
    import package1.mypath
    package1.mypath.join()
    """
    # 方法二(模拟os.path.join写法)
    """
    import package1
    package1.mypath.join()
    package1.mypath.getsize()
    """
    
    
    # from ... import 从包导入相应成员
    from package1 import ceshi301
    print(ceshi301)
    # 从包当中导入模块
    from package1 import mypath
    mypath.join()
    # 引入包下的模块下的具体成员
    from package1.mypath import getsize
    getsize()
    # 在引入的同时,起别名
    from package1.mypath import getsize as gs , join as j
    gs()
    j()

    八、单入口模式

    # 分模块不能单独进行调用,统一由主文件main进行调用
    # 模块之间的互相嵌套导入,使用相对路径实现
    # 单入口文件必须和包在同一层级,包里面可以含有各种包和文件
    
    # 相对路径导入的落脚点在:模块或其中的具体成员身上

    目录结构为:

    ceshi1000 = 1000
    ceshi1001 = 1001
    from . import pgone_2
    print(pgone_2.ceshi2001)
    pgond1.py

    报错信息:

    from package2.pkg1 import pgone_1
    main.py

    1、main文件作文主文件,通过相对路径调用各包和模块

    # . 代表当前
    from . import pgone_2
    print(pgone_2.ceshi2001)
    
    # ceshi2000
    from .pgone_2 import ceshi2000
    print(ceshi2000)
    
    # .. 上一级
    from .. import pkg2_module1
    print(pkg2_module1.ceshi3000)
    
    from ..pkg2_module1 import ceshi3001
    print(ceshi3001)
    
    from ..pkg2 import pgtwo_2
    print(pgtwo_2.ceshi4000)
    
    from ..pkg2.pgtwo_2 import ceshi4001
    print(pgtwo_2.ceshi4001)
    """
    """
    .    当前路径
    ..   上一级路径
    ...  上一级的上一级
    .... 上一级的上一级的上一级
    .....   (这里的点是无限的)
    from .......................................... import 模块
    . 代表当前 .. 上一级
  • 相关阅读:
    spider-抓取页面内容
    Zabbix监控
    时间戳转换
    计算机脱域
    查询指定时间内审核失败的事件日志
    spider-抓取网页内容(Beautiful soup)
    Queue
    spider-抓取网页内容
    MyEclipse+Tomcat配置
    Gradle Java Web应用程序并在Tomcat上运行
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13419727.html
Copyright © 2011-2022 走看看