zoukankan      html  css  js  c++  java
  • Python 基础之import导包

    首先需要将import内容建立一个大概如下层级的包:

    以黑色框为第一级,蓝色框为第二级,棕色框为第三级,红色框为第四级

    一.import 引入初识

    首先在module.py写入代码如下:

    xboy = "hsz"
    xgirl = "zero"
    
    def dog():
        print("小狗喜欢啃骨头")
    
    def cat():
        print("这个小猫的名字叫做小花")
    
    class MyStu():
        name = "Python"
    
    print("hello python")
    print(__name__)
    
    if __name__ == "__main__":
        #如果是间接的被导入,下面的代码不执行
        print("test")

    然后在main.py写入代码并逐个运行:

    1.import 引入

    import module
    #请记住:当导入模块的时候,只需要一次即可,终身受益.不会出现重复导入的情况
    #模块.属性(变量)
    res = module.xboy
    print(res)
    
    #模块.函数(方法)
    module.dog()
    
    #模块.类
    print(module.MyStu().name)
    
    
    #使用别名调用模块当中的成员
    import module as m
    print(m.xboy)
    m.cat()
    
    import sys
    print(sys.path)
    """
    #自定义模块,进行导包
    '''
    在导包的时候,系统默认先从sys.path 这个路径开始寻找,如果找不到,直接报错,
    如果想要找到,把相应的路径插入到sys.path这个列表,系统自动寻找对应模块.
    '''
    import sys
    """
    sys.path.append(r"F:/hsz/zero/ceshi_module/") #
    import abcd
    print(abcd.ceshi001)

    然后对上面的mian.py里的内容进行注释,往后添加如下代码进行一步步运行:

     2.from...import 从哪里..引入...方法

    
    
    #引入一个
    from module import dog
    dog()
    
    #引入多个
    from module import cat,xgirl
    cat()
    print(xgirl)
    
    #引入所有 * 代表所有
    from module import *
    print(xboy)
    
    #可以在引入的同事,起一个别名
    from module import cat as c,xboy as ww
    print(ww)
    c()
    
    print(__name__,type(__name__)) #__main__
    """
    #返回模块名字的魔术属性 __name__
        如果当前文件是直接执行的,就是主文件(主进程),返回__main__
        如果当前文件是间接执行的,就是子文件(子进程),返回当前文件名(模块名)
    """
    
    if __name__ == "__main__" : #if "main" == "__main__"  条件不成立 , 下面的代码不执行,不导入
        # __name__ == __main__ 用来做测试用的, 在被间接导入的时候,下面的代码不需要导入
        print("test code")

    3.学习导入包

    先对a.py 写入代码:

     

    ceshia = 10011
    ceshia2 =10012
    ceshia3 = 10013

     

    mypath.py写入代码:

     

    def join():
        print("自定义join")
    
    ceshimypath = "mypath2345678"

     

    还有package1下的__init__.py

    ceshi101 = 10111111
    
    # __init__ 不是用来直接运行的,而是伴随包的初始化的.
    
    # 方法三调用时,打开进行测试.
    # from package1 import a
    # from package1 import mypath

    然后对main2.py写入代码,一个方法一个方法进行运行

    #文件就是一个模块,文件就是一个包
    #文件夹里面可以有很多文件,就相当于包中有很多的模块
    #如果想把包当成模块用,在创建一个__init__.py中进行定义
    #当引入一个包的时候,当前包下的__init__文件自动执行
    import package1
    print(package1.ceshi101)
    
    #方法一
    import package1.a
    print(package1.a.ceshia)
    
    #方法二 (起别名)
    import package1.a as pa
    print(pa.ceshia2)
    
    #方法三
    # print("======方法三=========")
    # print(package1.a.ceshia)
    # package1.mypath.join() # 类比os.path.join的用法

    注意:方法三只有在用的时候才将注释去掉运行测试,为了不影响接下来的运行,运行完方法3后对其进行注释

    4.from ..import 语法

    然后对main2.py接下来的运行做好准备,需要在个个包下的文件添加内容如:

    /package2/pkgone/pkgone2.py 内容为:

    ceshippone2 = "ceshione2"
    ceshippone22 = "ceshione22"

    /package2/pkg_module1.py内容为:

    ceshim1 = "m1"

    /package2/pkgtwo/pkgtwo1.py内容为:

    ceshi222 =222
    ceshi2222 = 222222

    接下来是main2.py添加如下代码:

    #引入package1包下 a模块中的ceshia2 属性
    from package1.a import ceshia2
    print(ceshia2)
    
    #引入的同事,起别名
    from package1.mypath import ceshimypath as cm,join as j
    print(cm)
    j()
    ## 引入 package2 包下的 pkgone 包下的 pkgone1 模块 ,顺便起别名ppp1
    import package2.pkgone.pkgone1 as ppp1
    print(ppp1.ceshippp)
    
    

    对此代码块进行一 一测试

    5.单入口模块(重要)

    分模块不能单独进行调用,统一由主文件main进行调用
    模块之间的互相嵌套导入使用相对路径实现
    单入口文件必须和包在同一层级,包里面可以含有各种包和模块
    
    #单入口模式主要是对子文件的内容进行测试,在/package2/pkgone/pkgone1.py文件下添加如下代码:
    ceshippp = "测试pppone"
    ceshippp1 = "测试pppone1"
    
    #子文件,如果是单入口模块,不能直接执行,因为在这里都用的的相对路径
    #1.

    from . import pkgone2 print(pkgone2.ceshippone22) #2. from.pkgone2 import ceshippone2 print(ceshippone2) #3. from .. import pkg_module1 print(pkg_module1.ceshim1) #4. from .. pkgtwo import pkgtwo1 print(pkgtwo1.ceshi222) #5. from ..pkgtwo.pkgtwo1 import ceshi2222 print(ceshi2222) """ . 当前路径 .. 上一级路径 ... 上一级的上一级 .... 上一级的上一级的上一级 ..... (这里的点是无限的) from .......................................... import 模块 """

    最后是在main2.py进行测试,将pkgone1.py文件一行行注释后,然后分5次将注释打开进行测试,并查看结果,理解单入口模式的使用方法

  • 相关阅读:
    1.12学习总结:分区
    1.11学习总结:持久化
    1.10学习总结:RDD的行动操作
    1.9学习总结:RDD的转换操作
    1.8学习总结:RDD创建
    1.7学习总结:pyspark实例WordCount
    1.6学习总结:Spark集群的高可用配置
    1.5学习总结:安装Spark
    毕业设计第四周第七天完成情况汇总
    毕业设计第四周第五天完成情况汇总
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/10896084.html
Copyright © 2011-2022 走看看