首页 > 其他 > 详细

模块导入与内置模块

时间:2020-07-02 21:38:57      阅读:52      评论:0      收藏:0      [点我收藏+]

模块:
    本质上就是以.py结尾的文件。 其目的就是为了文件里的代码实现一些功能

包:
   就是包含有__init__.py文件的目录。  包和文件夹仅仅只差了这个文件

 

import 模块               导入的本质就是搜索路径把python文件解释一遍                                    所以导入模块就一定要找到路径

                                 直接用import调用的是标准库模块,python自己内置的 。  import 会先在环境变量中找这个模块,然后执行一遍引用的模块。所以一般引用模

                                  块 都是功能函数,没有逻辑运算和处理

rom 模块 import 函数   这个跟上面原理不同,它完全是把函数copy到了要导入的模块中(存在函数同名的情况,还是会执行执行本
                                   身函数,非要执行导入的同名函数,可使用  from 模块 import 函数 as  别名    。执行别名函数就行)
                                  直接在本身模块上用该函数就行。


   from 包  import 包      导入包和导入模块是完全不同的概念和原理    
                                     导入包是执行包里面的__init__.py文件    导入模块是把模块里面的数据赋值一个变量,然后调用变量里的东西

 

普通导入模块或者里面方法

import    module                           在环境变量中找module文件路径,并执行一遍搜索到的模块                                    

from module import  m1               相当于把m1函数函数直接copy到当前模块中

from  module import *                   把module模块中的函数全部引入到当前模块     不建议用(易与当前模块重名)

from  module import m1 as bie     把引入的函数换个变量名这样避开当前模块重名函数

 

模块和包平级,包里面模块导入包外和模块

import sys,os
x = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #从当前的文件向上两级目录的路径
sys.path.append(x) #把这个路径加入环境变量,就能找到需要导入函数路径了

import day10 #能找到模块了
day10.shoping()

 

外面包导入里面模块

from haha import number                                                                                #用from把模块相当于抄写在当前模块中                                                           

number.test()

 

包里面模块导入另一个包模块

其实和上面是一样的,添加环境变量,导入模块即可

import sys,os
x = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(x)

from ha2 import goog2 #从ha2包中找到goog2模块
goog2.bb3()

 

导入包

import bao                                                                                                           其实就是解释包里面的__init__文件  没什么意义,我们一般都是要导入包里面模块                                                                                                                

import sys,os                                                                                                      #增加环境变量,才能找到博爱的路径                                                            

x = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

sys.path.append(x)

import ha2                                                                                                      #导入包 其实就是执行__init__文件,如果要执行包里面的模块,只能在__init__中导入模块,且只能用(from导入)

 

 

init文件

 

print(这是init文件‘)
from . import goog2 #其实这里注意了 ,当我们导入一个模块的时候,导入的模块中还有导入模块操作时(1——》2,2——》3)在2中用import找3模块的话,1无法找到3模块(3路径没在环境变量中),可以在2中用from
#来导入模块,相当于copy3模块到2模块中,1模块当然能执行3模块的函数了

导入包,并且调用里面的模块

 

 

import sys,os
x = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(x)

import ha2

ha2.goog2.bb3()

 

 

 

 

 

 

导入不同级别目录模块


跨项目(包)来导入模块时:
           由于当前处在不同的包内,当导入模块时,就会按它的环境变量sys.path(是一个列表)里面的路径去搜索导入模块文件。由于找不到
肯定会报错,所以我们要增加父包或者父父包(向上退2级或者3级)路径到环境变量中来使它能被找到导入。
           __file__当前文件的路径    dir =  os.path.abspath(__file__)当前文件的绝对路径      os.path.dirname(__file__) 当前文件的父目录


 
导入和优化  
         如果模块中的数据被重复调用很多次  那么每次调用的时候就会先找文件再去执行,重复去找的过程其实浪费很多资源。我们可以
         用 from 模块 import 这种导入方式 ,把函数直接copy来直接用,而不用反复去找文件调用

关于在导入包时注意的事项
        如果需要跨包调用模块,则是在调用成功包后,执行的是包下面的__init__文件,需要在此文件中引用需要导入的模块,但是由于__init__的特殊,
此文件导入必须以from . import 模块   的形式来导入
       原来需要导入的模块调用时应该是    调用的包名字.模块名.函数

 

第三方模块             自己安装

 

自定义模块            自己编辑

模块导入与内置模块

原文:https://www.cnblogs.com/huangjianfir/p/13227215.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!