zoukankan      html  css  js  c++  java
  • 关于模块和包,以及程序入口,(__name__)

    模块(moudle)本质上是含有代码可被python调用的文件(.py, c或者c++的扩展),每一个模块内部都有一些函数或者变量属性,每个模块都有一个__name__变量记录这个模块的名字,这个变量是全局变量,保证其他python文件想要import时如何确定该文件即是要导入的文件。

    包(package是一系列模块构成的集合),每一个包相当于许多模块的集合,且每个包都有一个__init__.py模块,里面可以是空的也可以不是空的,__init__.py的模块名字就是包的名字。

    如果正在执行的python文件没有被其他文件导入,(即不是作为模块被import)此时这个文件是程序的入口,相当于一开始就在浅层执行的文件,而不需要python去文件目录中寻找对应的文件来导入代码,这时其__name__='__main__', 也就是正在执行的作为程序入口的文件(不像是模块)的名字是__main__.

    #一个进程只对应一个模块的实例,无论被导入多少次,每个模块在整个解释器进程仅有一个实例存在。
    #在不同的命令行窗口,不同的notebook是不同的解释器进程。

    1 import m

    2 m.__name__

    3 __name__ 

    输出:

  • 相关阅读:
    Python学习(3)——if语句
    Python学习(2)——编码
    一次性邮箱
    Python学习(1)
    Hello World
    java设计模式创建篇------原型模式
    Java技巧------Cloneable接口与clone方法
    java设计模式创建篇------抽象工厂
    java设计模式创建篇------工厂模式
    python函数式编程
  • 原文地址:https://www.cnblogs.com/zy1120192493/p/13121908.html
Copyright © 2011-2022 走看看