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
     
     






  • 相关阅读:
    CSS之旅——第二站 如何更深入的理解各种选择器
    CSS之旅——第一站 为什么要用CSS
    记录一些在用wcf的过程中走过的泥巴路 【第一篇】
    asp.net mvc 之旅—— 第二站 窥探Controller下的各种Result
    asp.net mvc 之旅—— 第一站 从简单的razor入手
    Sql Server之旅——终点站 nolock引发的三级事件的一些思考
    Sql Server之旅——第十四站 深入的探讨锁机制
    Sql Server之旅——第十三站 对锁的初步认识
    Sql Server之旅——第十二站 sqltext的参数化处理
    Sql Server之旅——第十一站 简单说说sqlserver的执行计划
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/9782477.html
Copyright © 2011-2022 走看看