澳门至尊网站-首页

您的位置:澳门至尊网站 > 黑客安全 > 模块和包

模块和包

2019-10-21 09:25

1.怎么是模块

  八个模块正是三个分包了python定义和申明的文本,文件名就是模块名字加上.py的后缀

  其实import加载的模块分别为死歌通用项目:

    1.采取pytho编写的代码(.py文件)

    2.已被编写翻译为分享库或DLL的C或C++增添

    3.包好少年老成组模块的包

    4.选拔C编写并链接到python解释器的放置模块

2.如何团结写二个模块

    创造四个py文件,给它起贰个合乎变量命名法规的名字,那么些名字正是模块名

3.模块的导入

  导入多个模块正是试行二个模块

  模块导入的历程中生出了怎么:

    1.找到那些模块

    2.判定这一个模块是还是不是被导入过了

    3.只要没有被导入过:

      创设三个属于这些模块的命名空间

      让模块的名字指向那一个空间

      推行那么些模块中的代码

  给模块起外号:起了外号之后,就只好动用这几个模块的别称引用变量了

  导入三个模块:

    import os,time

  标准提议:

    模块应该贰个二个的导入:

      内置模块

      扩展(第三方)模块

      自定义模块

  from  import  

    模块导入的进度中爆发了哪些:

      1.找到要被导入的模块

      2.料定这一个模块是还是不是被导入过

      3.假诺那些模块没被导入过

        创设三个属于那么些模块的命名空间

        执行那一个文件

        找到要导入的变量

        给导入的变量创设三个援引,指向要导入的变量

 1 #测试一:导入的函数read1,执行时仍然回到my_module.py中寻找全局变量money
 2 #demo.py
 3 from my_module import read1
 4 money = 1000
 5 read1()
 6 
 7 #测试二:导入的函数read2,执行时需要调用read1(),仍然回到my_module.py中找read1()
 8 #demp.py
 9 from my_module import read2()
10 def read1():
11     print("1")
12 read2()

假设当前有重名read1只怕read2,那么会有覆盖效果

1 #测试三:导入的函数read1,被当前位置定义的read1覆盖掉了
2 #demo.py
3 from my_module import read1
4 def read1():
5     print("1")
6 read1()
7 执行结果:
8 from the my_module.py
9 1

from my_module import *把my_module中有着的不是以下划线(_)开端的名字都导入到当前岗位

from my_module import *
print(money)
print(read1)
print(read2)

执行结果:
from the my_module.py
1000

如果my_module.py中的名字前加_,即_money,则frommy_module import *,_money不可能被导入

模块引用中的意况:模块之间不容许循环引用

4.模块的加载与修改

  各类模块只被导入壹回,归入到sys.modules中,尽管改造了模块中的内容,必得重启程序

5.把模块当成脚本来使用

  能够由此模块的全局变量__name__来查看模块名:

    充当脚本运行:

      __name__等于'__main__'

    充当模块导入:

      __name = 模块名

  功能:用来调控.py文件在分歧的使用场景下试行不意气风发的逻辑

  if __name__ == '__main__':

 1 def fib(n):
 2     a,b = 0,1
 3     while b<n:
 4         print(b,end = '')
 5         a, b = b, a+b
 6     print()
 7 
 8 if __name__ == "__main__":
 9     print(__name__)
10     num = input("num:")
11     fib(int(num))

py文件:直接运维那几个文件,那些文件正是一个本子

    导入这一个文件,那几个文件就是多个模块

当一个py文件:

  充任一个本子的时候:能够单独的提供叁个功力,能自立完毕交互

  当成三个模块的时候,能够被导入那调用那些作用,不可能自己作主交互

一个文本中的__name__变量:

  当以此文件被看做脚本施行的时候:__name__ == '__main__'

  当那几个文件被充作模块导入的时候:__name__ == '模块的名字'

6.模块寻找路线

  在率先次导入某些模块时,会先检查该模块是或不是业已被加载到内存中(当前施行文书的称号空间对应的内存),假诺有则直接引用,若无,解释器则会招来同名的内建立模型块,倘使还尚无找到就从sys.path给出的目录列表中逐一找出这些模块

故此模块的物色顺序是:内部存储器中已经加载的模块->内置模块->sys.path路线中隐含的模块

 

7.包

  1.文件夹中有三个__init__.py文件

  2.是多少个模块的集纳

  3.无论是import情势依然from..import格局,凡是在导入语句中(并不是在动用时)境遇带点的,那是有关包才有的导入语法

  4.包是目录级的(文件夹级),文件夹是用来整合py文件(包的本质就是三个包括__init__.py文件的目录)

  5.import导入文本时,发生名称空间中的名字来自文件,import包发生的称谓空间的名字如出意气风发辙来自文件,即包下的__init__.py,导入包本质正是在导入该公文

  6.导入几个包也正是实施了那个包上边包车型大巴__init__.py文件

关于包相关的导入语句也分为import和from..import..三种,但无论是哪个种类,在怎么着岗位,都服从三个标准:

      凡是在导入时带点的,点的左边都无法不是一个包

对此导入后,在使用时就从不这种限制了,点的侧面能够是包,模块,函数,类(他们都得以用点的章程调用自身的个性)

纯属导入:

  在施行一个py脚本的时候,这么些剧本以至那些剧本同级的模块中不得不用相对导入

  缺点:

    全部的导入都要从三个根目录下以后解释文件夹之间的关联

    要是当前导入包的文书和被导入的包的岗位关系发出了转移,那么全数的init文件都要做相应的调解

1 import glance
2 glance.__init__.py
3 import api
4 sys.path = [path]
5 glance.api.policy.get()

对峙导入:

  无需去一再的修改路线

  只要一个包中的兼具文件夹和文书的相对地方不产生更动,init文件就无需调治

  不须求去关切当前以此包和被实施的文书之间的层级关系

  缺点:

    含有相对导入的py文件不可能被一直实践

    必须放在包中被导入的调用本领不奇怪的应用

借使只是从包中程导弹入模块的话,就不须要做另外多余的操作

固然指望导入包的时候,能够顺便的把模块也导入进来,要求统筹init文件夹

本文由澳门至尊网站发布于黑客安全,转载请注明出处:模块和包

关键词:

  • 上一篇:没有了
  • 下一篇:没有了