码迷,mamicode.com
首页 > 编程语言 > 详细

Python 模块详解及import本质

时间:2019-05-25 22:48:40      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:tle   alt   copy   目录   pack   导入   ini   init   def   

同在当前目录下的模块和包导入

模块定义

  • 本质就是.py结尾的python文件. 用来从逻辑上组织python代码(变量,函数,类,逻辑)
  • 文件名: test.py;  对应的模块名 : test

 

模块导入方式

  • import module_name
    • 调用时需要加module_name. (有点类似java中的类名.调用)
  • import module1_name, module2_name
    • 调用时需要加module_name (有点类似java中的类名.调用)
  • from module_name import * 
    • 不建议用这种方法. 若导入的包中变量名或方法名与当前文件的变量名或方法名一样, 这样会有冲突. 当前文件中同名的方法会覆盖导入文件中的同名方法.
    • 调用时可以直接调用变量名或方法名, 不需要加module_name. (有点像java中调用同一个类中的方法, 直接用就行, 不用加类名.)
  • from module_name import logger as logger_alex (导入和当前文件中方法同名的方法时可以起个别名logger_alex,以避免和当前文件中的方法冲突)
    • 调用时可以直接调用变量名或方法名, 不需要加module_name. (有点像java中调用同一个类中的方法, 直接用就行, 不用加类名.)

 

导入模块本质

  • 导入模块的本质就是把python文件解释一遍

例: 

module_alex

技术图片
1 name=‘alex‘
2 def say_hello():
3     print(‘hello alex‘)
4 
5 
6 def logger():
7     print(‘logger‘)
技术图片
技术图片
 1 # 导入方法1, 导入指定变量名或方法
 2 import module_alex
 3 
 4 print(module_alex.name)
 5 module_alex.say_hello()
 6 
 7 
 8 
 9 # 导入方法2, 导入某个文件全部 (相当于把导入文件的代码加到当前文件中, 所以调用其方法不需要再加文件名,可直接调用)
10 from module_alex import *
11 logger()  # 若当前文件中也有一个方法名叫logger(), 这样会有冲突. 当前文件的logger()会覆盖导入文件中的logger()方法
技术图片

 

包定义

  • 本质就是一个目录(必须有一个__init__.py文件)
  • 用来从逻辑上组织模块

包导入方式

  • import package_name
  • 包导入的本质
    • 导入包的本质就是执行该包下的__init__.py文件4
  • 若包下面除了__init__.py还有其它文件, 想要调用这些文件, 直接 package_name.test1是不行的, 因为导入包的本质是执行下面的__init__.py文件.
    • 这种情况下, 需要在__init__.py文件中导入该package_name下的其它文件
    • 也可以在__init__.py文件中用from.import test1 (代表从当前目录下导入test1)的方法导入同一目录下的另一个python文件test1.
    • 技术图片

Python 模块详解及import本质

标签:tle   alt   copy   目录   pack   导入   ini   init   def   

原文地址:https://www.cnblogs.com/tianshug/p/10924273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!