zoukankan      html  css  js  c++  java
  • module模块和包的介绍,模块的执行以及name

    '''
    module模块和包的介绍
    模块的概念:一个。py文件就称之为一个模块
    使用模块有什么好处:最大的好处是大大提高了代码的可维护性
    模块一共三种:python标准库,第三方模块,应用程序自定义模块
    '''
    
    # 文件夹和包的区别:如果是一个包,那么包下面必定会有__init__.py文件
    
    # import day21_1 # *****import会把后面py文件执行一遍,执行完后再把文件名当成变量拿给当前文件去用*****
    #
    # print(day21_1.add(4, 5))
    # print(day21_1.sub(5, 4))
    
    
    # from day21_1 import add, sub # 就算是单独引用变量,文件也会全部执行
    # from day21_1 import * # 不推荐
    #
    # print(add(4, 4))
    # print(sub(4, 4))
    
    
    # from day21_1 import *
    #
    # def add(x, y):
    #  return x + y +100
    # print(add(1, 1)) # 结果是102,先导入day21_1模块并引入所有的变量名,接下来的函数同名了,同名变量又指向了此文件的函数,所以运行的是此文件的函数
    
    
    # def add(x, y):
    #  return x + y + 100
    #
    # from day21_1 import *
    # print(add(1, 1)) # 结果是2,先定义了add函数,接下来导入day21_1模块并引入所有的变量名,那么此时所导入的模块的add变量覆盖了当前文件的变量,指向了导入模块的add()函数
    
    
    # import sys
    # print(sys.path) # import会首先根据当前执行文件的系统路径加入到path中,在系统path中寻找需要导入的文件
    
    
    # from my_module import cal # 所导入文件在同级目录的另一个目录下面
    # print(cal.add(3, 3))
    
    
    # from my_module import main
    # main模块调用cal模块,day21模块调用main模块;main模块和cal模块在同一级,所以一开始只需要import cal即可,但当day21模块也调用了main模块时,此时会报错
    # 因为在执行day21模块时,系统变量path只有路径s1这个包,并没有路径my_module这个包,所以在导入main模块并执行时,会报错
    # 解决方法就是,在main模块导入cal模块时,也加上from
    # 如果不使用from的方法,那么通过sys模块把文件路劲加入path即可(sys.path得到结果是一个列表,可以进行修改--->sys.path.append(r'路径')--->在pycharm右键点击文件出现copy选择copy path即可得到文件路径)
    # 上面方法得到的路径是绝对的,如果在其它系统上路径不一样可能就运行不了了;所以可以依靠os模块的功能,sys.path.append(os.path.dirname(os.path.dirname(__file__)),__file__代表的是文件名(pycharm中打印的是绝对路径),os.path.dirname(__file__)代表的是当前文件上一层的路径,在加一层代表往上一层目录
    # 在终端执行文件依旧不能执行,因为__file__本质就是文件名,那么需要文件的真正绝对路径,使用os.path.abspath(__file__)就行了,最终代码为:sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    # main.test()
    
    
    # 调取多层包下面的模块
    # from my_module.web.web1.web2 import cal
    # print(cal.add(1, 2))
    
    # from my_module.web.web1.web2.cal import add
    # print(add(1, 3))
    
    # from my_module.web.web1 import web2 # 会报错,唯一不支持的调用方式;这个导入其实是执行web2的__init__.py文件,
    # print(web2.cal.add(1, 4))
    
    # from my_module.web.web1.web2 import cal
    # print(__name__) # cal模块为被调用文件,所以cal模块里的print(__name__)打印结果为模块的路径;而当前文件是执行文件,所以print(__name__)打印结果为'__main__'
    # if __name__=='__main__': # 1.用于被调用文件的测试 2.在执行文件当中,让执行文件不被其它文件调用时还进行执行的操作,可以调用函数等其它可调用的变量,但执行的操作不需要在被调用时执行
    #  pass
    while True: print('studying...')
  • 相关阅读:
    给Windows组件添加图标
    C#文件和文件夹操作
    WinForm TreeView 右键菜单
    VC++ New 操作符
    Ext与Jquery的整合
    PowerDesign报表操作
    SQLServer自动建表存储过程
    Visual Studio 2008简体中文正式版下载地址
    WinForm遍历控件
    发布时用直接用源文件部署
  • 原文地址:https://www.cnblogs.com/xuewei95/p/14502972.html
Copyright © 2011-2022 走看看