zoukankan      html  css  js  c++  java
  • Python-25_模块-01_调用基本操作、路径

    组织代码的方式:把很多函数分组,分别放到不同的文件中
    在Python中,一个.py文件就称为一个模块(Mudule);

    好处:1、提高了代码的可维护性
    2、编写代码不必从零开始,当一个模块编写完成,可以在其他地方引用
    3、可以避免函数名和变量名冲突,但尽量不要与内置函数名字冲突

    模块一共分三种:
    - python标准库
    - 第三方模块
    - 应用程序自定义模块

    Python中:包(Package)
    包: 普通文件夹中有__init__.py文件;
    普通文件夹: 没有__init__.py文件;
    调用包就是执行包下的__init__.py文件
    ----------------------------模块导入方法:--------------------------
    import time   # 通常情况下:import 先把time模块中的除函数外的代码执行一遍,然后再去执行time模块中的、当前调用的函数。
    
    # 例如调用time模块中的sleep()方法:
    # 1、import 语句
    import time
    time.sleep(1)
    
    # 2、from…import 语句
    from time import sleep
    sleep(1)
    
    # 3、from…import* 语句     (不推荐)
    from time import *
    sleep(1)
    -------------------------调用模块时的路径,以当前运行模块所在路径为基础-------------------------------
    一级文件(运行文件):
    # 寻找上一阶py文件所在地址,并调用
    import sys,os
    
    ###################  绝对路径 寻找到上一个文件所在路径  ####################
    # 例如:D:user....my_packageinin.py  想找到my_package路径下的py文件,方法如下:
    BASE_DIR=os.path.dirname(os.path.dirname(__file__))
    sys.path.append(BASE_DIR)
    # 如果只写到这里,在python中执行,是定位到了my_package路径下了,但是在电脑系统终端上运行时,是查不到的;
    # 进一步优化:
    BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASE_DIR)
    # abspath --- 绝对路径
    # 这样在系统终端上或者python中都可以执行了
    
    
    # from my_package01第三方 import cal
    # print(cal.add(1,2))           # 直接调用my_package01 包中的cal模块
    
    from my_package01 import main
    if __name__=="__main__":    # 当有人把当前py文件作为模块,调用并调试某些功能时,可以防止其运行该模块下的主程序。
        main.Amain()             # 所以,一般写好的调用程序,养成习惯,前面记得加上这句,防止掉坑!!!!
        main.Bmain()
        main.Cmain()
        print(__file__)          # E:/Python+AI/newmet/07_模块/01_模块调用操作_基础/my_Package01/bin.py
        print(BASE_DIR)          # E:Python+AI
    ewmet7_模块1_模块调用操作_基础
    print(__name__)         # 结果:__name__
    
    
    # 上面使用
    # __name__ :1、当其在执行文件中时,它就== "__main__"
    #            2、当其在被调用模块中时,它就是被调用模块的路径
    #               (当bin调用cal模块时,cal中输出的print(__name__)结果为my_package01.my_package01.cal)
    bin

    二级文件(一级文件调用的文件):

    from my_package01.my_package01 import cal       # 建议用这种
    def Amain():
        print(cal.add(1,2))
    
    from my_package01.my_package01.cal import add
    def Bmain():
        print(add(3,4))
    
    from my_package01 import my_package01
    def Cmain():
        print(my_package01.cal.add(8,4))
    main

    三级文件(二级文件调用的文件):

    print("hello world")
    
    
    print(__name__)             # 结果:my_package01.my_package01.cal  当从bin执行文件调用该文件时,就是此结果。
    
    def add(x,y):
        return x+y
    cal
  • 相关阅读:
    MATLAB使用fft求取给定音频信号的频率
    python实现抓取必应图片设置桌面
    [原创]Nexus5 移植OneStep
    [原创]Nexus5 内核编译烧录过程记录
    repo版本切换
    pthread
    《Android进阶》Sqlite的使用
    【转】iOS夯实:ARC时代的内存管理
    【转】如何使App从后台返回前台时,显示指定界面
    【转】自定义UITableViewCell(registerNib: 与 registerClass: 的区别)
  • 原文地址:https://www.cnblogs.com/newmet/p/10037852.html
Copyright © 2011-2022 走看看