zoukankan      html  css  js  c++  java
  • python_day20_自己定义模块和模块的调用_包(Package)以及包之间的调用

    #Author:"haijing"
    #date:2018/10/13

    # 模块:一个.py文件就是一个模块
    # python标准库模块 re模块、time模块
    # 第三方模块
    # 应用程序自定义模块

    # import calculate #此时可以将calculate看做一个对象 calculate=calculate.py all code
    #调用自己写的模块calculate.py和当前文件在同一个文件夹下
    #通过搜索路径找到caculate.py之后,将calculate.py中所有的代码都执行一下,如果是函数定义则为该函数分配空间
    # 如果在当前文件夹下找不到,则接着往上去找
    # print(calculate.x)
    # print(calculate.add(1,2)) #打印3
    #创建两个.py文件,即两个模块

    #只调用calculate.py中部分函数的方法 (提高效率)
    # from calculate import add #只调用calculate.py中的add()函数
    # print(add(1,3)) #打印4
    # d(1,3)) #打印4

    # from calculate import add,sub #调用calculate.py中的add()函数和sub()函数 常用*****
    # print(ad
    # import calculate,time #同时调用自己写的calculate模块和系统time模块

    # from calculate import * #可以引用函数和变量 很少用
    #
    # def add(x,y): #会覆盖掉calculate中的add()函数
    # return x+y+2
    # print(add(1,2)) #调用本py文件中的add()函数,而不去调用calculate中的add()函数

    # from calculate import add as plus #将calculate下的add()函数改名字为plus()

    #搜索路径 sys.path
    # import sys
    # print(sys.path)

    #包package:存储一个个.py文件,会比普通的文件夹多一个init文件,并以此来区分包和文件夹
    #可以在day20下新建一个包(Python Package)名字为web,并在web下加入main.py和looger.py模块


    #调用web(包)下的logger.py
    # from web import logger
    # logger.log() #打印logger 在别的地方执行logger.py下的log()函数

    # from web.logger import log #只拿出logger.py下的log()函数
    # log() #打印logger

    # from web.web2 import logger #如果在web包下还有一个web2包,在web2包下有一个logger.py,则这样调用

    import web #会执行__init__.py文件下的东西,只是加载了__init__.py,与main.y和logger.py无关系
    print()
    #包的具体应用

    (1)模块bin.py中的内容:

    #Author:"haijing"
    #date:2018/10/13
    #程序启动入口
    #这样可以正确执行,但是脱离了这个电脑,就不能执行了啊,因为定义的目录肯定不一样
    # import sys
    # sys.path.append('D:\PyCharmPro\pro02\week03\day20\ATM') #手动添加上ATM的绝对路径
    # from module import main
    #隐藏的错误:由于bin是在module的下级目录,所以可能找不到module目录,但pycharm会自动的为你添加上D:\PyCharmPro\pro02\week03\day20\ATM目录
    #所以现在手动的去添加D:\PyCharmPro\pro02\week03\day20\ATM这个绝对路径
    # main.main()

    #改进
    import os
    import sys
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #将bin.py的爷爷级目录赋给BASR_DIR
    sys.path.append(BASE_DIR) #把bin.py的爷爷级目录添加到python解释器的搜索路径中
    #加上以上四行代码,这个程序移植到任何人的电脑上都可以执行
    from module import main #这一句会执行一遍main.py中所有可执行的语句,包括main.py中的main()
    from conf import settings
    main.main()
    settings.shoppings()
    settings.aas()



    # import sys
    # print(sys.path.append('D:\PyCharmPro\pro02\week03\day20\ATM'))
    # print(__file__) #打印D:/PyCharmPro/pro02/week03/day20/ATM/bin/bin.py 这个为相对路径
    # import os
    # import sys
    # print(os.path.abspath(__file__)) #把相对路径(D:/PyCharmPro/pro02/week03/day20/ATM/bin/bin.py)改为绝对路径(D:/PyCharmPro/pro02/week03/day20/ATM/bin/bin.py)
    # print(os.path.dirname(os.path.abspath(__file__))) #找到bin.py的父亲级目录D:PyCharmPropro02week03day20ATMin
    # print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#找到bin.py的爷爷级目录D:PyCharmPropro02week03day20ATM
    # BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #将bin.py的爷爷级目录赋给BASR_DIR
    # sys.path.append(BASE_DIR) #把bin.py的爷爷级目录添加到python解释器的搜索路径中

    (2)模块main.py中的内容:
    #Author:"haijing"
    #date:2018/10/13
    #放配置信息
    # import logger #一般不能这样调用,以为如果main()函数在别的包(比如bin)中去调用的时候,此时会找不到logger()
    from module import logger #这样在别的包中的bin.py中调用main()就不会找不到logger()了
    def main():
    logger.logging()

    # main()
    (3)模块settings.py中的内容:
    
    
    #Author:"haijing"
    #date:2018/10/13

    def shoppings():
    print('shoppings')

    def aas():
    print('okaas')
    (4)模块logger.py中的内容:
    #Author:"haijing"
    #date:2018/10/13

    def logging():
    print('logger')

    2018.10.13
    haijing in building 2,Hangzhou
     
     






  • 相关阅读:
    (参考)爬虫5-爬取中国大学排名情况
    005_软件安装之_常用办公软件
    004_软件安装之_Altium Designer
    001_基础硬件电路_二极管
    添加QQ群
    024_STM32程序移植之_ESP8266_TCP
    020_C语言常用函数
    004——转载C#禁止改变窗体大小
    003转载----C#打开网页
    002_Python基础学习网站
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/9782477.html
Copyright © 2011-2022 走看看