【python 面向对象】 python对象学习笔记《1》

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hiha_hero2333/article/details/79515152

模块和包

  模块 Module 就是一个简单的python文件,模块里面可以定义各种类 class 和函数。
  import 语句用来导入模块或者从模块里面导入特定的类或函数;也可以用 from…import 语句来导入模块 module 下的一个类,
  例如:
  

import database                              
db = database.Database()  

  等价于:
  

from database import  Database()
db = Database()

  如果名字冲突,再导入的时候可以自己改名字,使用 from … import…as 语句。
  如果要导入一个模块下所有的类和函数,使用 from.. import * 语句,不过一般不要使用这种语法,这样如果代码量一大,在寻找类的时候就会花去很多不必要的时间,也有另外的表达是“使得命名空间混乱”。
  当我们的模块 module 越来越多不方便管理的时候,我们可以创建一个包 package 来放置内容主题相关联的 模块(python文件),包就是一个文件夹,但包括了一个名叫 _ init _.py的文件(通常为空)。没有这个文件,python无法识别这个文件夹从而无法导入模块。

绝对导入和相对导入

  绝对导入 需要指明这个模块、函数的完整路径。
  import语句使用点号 ‘.’ 来作为分隔符分隔 package 或者 module
  相对导入 如果我们想导入关于当前工作模块附近的模块,而又不想指明完整的绝对路径,那么就可以选择相对导入的方式
  例如我们当前工作的模块叫 a.py ,要调用当前包 package 里的另一个模块 b.py 中的函数B:
  

from .b import B

  如果调用父包里的c模块的C函数,那么就要带上两个点:
  

from ..c import C

可以通过更多的点 . 来访问层级更上的包。


  当导入模块的时候,模块里面的所有代码都会被立即执行,但如果模块里面的是一个方法或者函数,会创建这个函数,但函数里面的代码只有到函数被调用的时候才会执行。当我们正在执行某一个程序,而恰好想着从另一个模块导入一个类(只想访问),导入的过程中被导入的模块里的代码被立即执行,这样可能会使我们当前运行的代码程序终止掉。
   为了解决这个问题,我们应该总是把要启动的代码放到一个函数里面(通常叫main函数),并且当我们知道这是在执行脚本的时候,才去执行这个main函数,而不是在其他脚本导入的时候。这里我们要知道:
  

  • 每一个模块都有一个特殊的变量 __name__ , 在导入这个模块的时候,__name__ 变量指明了模块的名字,当这个模块直接通过python 执行的时候,就不会导入这个变量,而这时__name__变量就赋值给一个字符串 “__main__” ,而不再是模块名字了。这段话再简单通俗的来说:
      
       if__name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行.
      
       这样你把所有的代码都包在if __name__ == '__main__',就不用担心调用的时候把自己当前的程序中断了

参考 : 如何简单地理解Python中的if name == ‘main


猜你喜欢

转载自blog.csdn.net/hiha_hero2333/article/details/79515152