zoukankan      html  css  js  c++  java
  • 模块与包

    #
    # 模块
    #
    # 模块一共三种:
    #
    # python标准库
    # 第三方模块
    # 应用程序自定义模块
    #
    # 模块两种执行方式:
    #用于启动执行
    #用于被调用执行
    
    # 调用方式1  (推荐)
    # import module1
    # import module2
    # 调用方式2
    # import module1,module2
    # import time,sys,os
    
    
    # 执行被调用的模块 (第二次不会被执行)
    # 一个模块可以在当前位置import多次,但只有第一次导入会执行源文件内的代码,原因是:第一次导入就会将模块包含的内
    # 容统统加载到内存了,后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块内的语句
    
    
    # from module1 import *     # 慎用
    # 当你想限制*导入的内容的时候,可以在模块中添加以下语句__all__=[]
    # 中括号中写的字符串形式的变量就是指定*可以导入命名
    # 语句提供了一个简单的方法来导入一个模块中的所有项目。
    # 然而这种声明不该被过多地使用。大多数情况, Python
    # 程序员不使用这种方法,因为引入的其它来源的命名,很可能覆盖了已有的定义。
    
    # 总结模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块
    
    # 编辑起始路径
    # import os,sys
    # BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    # print(BASE_DIR)
    # sys.path.insert(0,BASE_DIR)
    
    
    # 在python中,包可以理解成一个文件夹,但是每一个文件夹里必须要有一个__init__文件
    # 只要是第一次导入包或者是包的任何其他部分,都会依次执行包下的__init__.py文件
    
    
    # 编译python文件
    # 当模块导入的时候会在模块文件内部产生一个pyc文件,这个文件是python的预编译文件,
    # 当下次读取的时候就会加速,这样就可以提高模块导入的时候的执行效率(只有导入模块的时候才会生成这个文件)
    
    # 关于__name__
    # 当文件本身运行自己的时候__name__=__main__
    # 单文件被当作模块调用的时候__name__=文件名
    # 一般当你的代码是个测试代码,不想被别人调用的时候可以加上判断语句
    # if __name__=__main__:
    #要执行的代码
    
    
    # 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,这是关于包才有的导入语法
    # 凡是在导入时带点的,点的左边都必须是一个包
    # 对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。
    
    # 需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,如:from a import b.c是错误语法
  • 相关阅读:
    [2021.8集训Day10/JZOJ.3410]【GDOI2014模拟】Tree
    [2021.8集训Day10/JZOJ.3441]【NOIP2013模拟】小喵喵的新家
    [模板]模拟退火 / 洛谷 P1337 [JSOI2004]平衡点
    P1600 [NOIP2016 提高组] 天天爱跑步
    P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并
    selenium的三种等待
    python中socket、socketio、flask-socketio、WebSocket的区别与联系
    (十二)python3 迭代器
    (十一)python3 encode()和decode()
    (十)python3 生成器
  • 原文地址:https://www.cnblogs.com/z-x-y/p/7096019.html
Copyright © 2011-2022 走看看