模块建房,模块化集成房屋

  模块建房,模块化集成房屋

  Yyds干货库存

  Python中的模块介绍,一个py文件就是一个模块,文件名是xxx.py,模块名是xxx。导入的模块可以引用模块中已经编写的函数。如果把开发程序比作制造计算机,编写模块就像制造计算机的部件。零件准备好后,剩下的工作就是逻辑组装。

  程序的模块化会使程序的组织结构清晰,更便于维护。与直接开发一个完整的程序相比,单独开发一个小模块会更容易,而且程序中的模块与电脑中的组件略有不同:程序中的模块可以重用。综上所述,使用模块不仅保证了代码的可重用性,还增强了程序的结构性和可维护性。另外,除了自定义模块,我们还可以导入内置或第三方模块提供的现成功能。这种“拿来主义”大大提高了程序员的开发效率。

  作为一个python程序员,以后接到一个业务需求,不要上来就想着自己写。首先,看对应的模块是否已经实现。

  对内置模块解释器可以直接使用的模块进行分类。

  导入时间示例

  时间.睡眠(3)

  自定义模块登录功能

  is_login={

  用户名“:”

  }

  定义登录身份验证(功能名称):

  def inner(*args,**kwargs):

  #首先判断全局字典中的用户名键是否有值。如果有值,说明用户登录成功,不需要反复检查。

  if is_login.get(username ):

  res=func_name(*args,**kwargs)

  返回资源

  用户名=输入(用户名:)。条状()

  password=input(password:)。条状()

  如果用户名==lele 和密码==123 :

  #记录用户登录的成功状态

  is_login[用户名]=用户名

  res=func_name(*args,**kwargs)

  返回资源

  否则:

  打印(“错误的用户名或密码”)

  返回内部

  @登录_验证

  def寄存器():

  打印(“注册功能”)

  @登录_验证

  定义登录():

  打印(“登录功能”)

  @登录_验证

  定义转移():

  打印(“传递函数”)

  @登录_验证

  def retract():

  打印(“现金提取功能”)

  寄存器()

  登录()

  转移()

  撤回()

  第三方模块别人写的模块需要提前下载,才能在网络上使用。

  不花钱的砰然一声;自愿参加

  模块1.py文件的表示(py文件也可以称为模块文件)

  2.包含多个py文件的文件夹(根据模块的不同功能存放在不同的文件夹中)

  3.已经编译为共享库或DLL的C或C扩展

  4.用C写,链接到python解释器的内置模块

  导入模块的两个句型

  附加备注

  以后真实项目中的所有py文件名都是英文的。

  没有数字和中文这种东西。

  例如:

  错误01。变量的使用

  正确的test01.py

  学习模块时,模块文件名必须是英文的。

  Py文件作为模块导入,不考虑后缀。

  导入模块1的句型导入句型

  导入md

  导入md

  执行文件是导入句型。02模块的py。

  导入的文件是md.py

  1.将生成可执行文件的名称空间

  2.生成导入文件的命名空间,并运行文件中的所有代码存储名称。

  3.在执行文件中会获得一个模块的名称,导入文件的命名空间中的名称可以被这个命名点使用。

  附加备注

  同一个程序只重复导入同一个模块导入语句一次。

  Md有效

  无效MD

  无效MD

  #金钱=10

  #打印(md.money)

  #打印(货币)

  # def read1():

  # print(我正在文件中执行读取功能)

  # md.read2()

  #钱=1000

  # md.change()

  #打印(货币)

  #打印(md.money)

  从导入模块2的句型.进口.句型

  #从md进口的钱#指名进口

  #印刷(货币)# 999

  # money=嘿嘿嘿。

  #印(钱)#嘿嘿嘿

  #打印(读取1)

  # print(md.read1())

  从md导入货币,read1

  read1()

  1.创建可执行文件的命名空间。

  2.创建导入文件的名称空间。

  3.执行导入文件中的代码,将生成的名称存储在导入文件的命名空间中。

  4.获取执行文件中的指定名称,并指向导入文件的名称空间。

  两种重要句型的利弊

  优点:模块中所有的名字都可以通过md point使用,不会冲突。

  缺点:md什么都能点。有时候它不希望所有的名字都被使用。

  从md导入货币,read1

  优点:命名名称使用指定的名称,不需要以模块名为前缀。

  缺点:名字容易冲突(绑定关系被修改)。

  其他导入语法(as)昵称通过as导入模块。

  Import foo as f #在当前位置给导入的模块foo一个别名f,后面会用到。

  f.x

  f.get()

  您也可以给导入的名称起别名。

  从foo导入get as get_x

  get_x()

  通常,当导入的名称过长时,会采用别名的方法来简化代码。此外,导入名称的别名方法可以避免与当前名称冲突。另外很重要的一点是调用方法可以保持一致。比如我们有两个模块json和pickle同时实现了load方法,用来解析打开文件的结构化数据,只是解析格式不同。您可以使用下面的代码有选择地加载不同的模块。

  if data_format==json :

  将json导入为serialize #如果数据格式是json,则导入json模块并将其命名为serialize

  elif data_format==pickle :

  将pickle导入为serialize #如果数据格式为pickle,则导入pickle模块并将其命名为serialize。

  Data=serialize.load(fn) #最终调用的方式是一致的。

  循环导入问题循环导入问题是指在加载/导入一个模块的过程中导入另一个模块,然后在另一个模块中导入第一个模块的名字。因为第一个模块尚未加载,所以引用失败并引发异常。根本原因是,在python中,同一个模块只会在第一次导入时执行其内部代码,再次导入时,即使模块没有满载,也不会重复执行其内部代码。

  下面我们以下面的文件为例,详细分析一下循环/嵌套导入出现异常的原因以及解决方法。

  解决方案:

  import语句放在最后,以确保在导入过程中加载了所有名称。

  import语句放在函数中,只有调用函数时才会执行其内部代码。

  注意:循环导入的问题大多是程序设计错误造成的,以上解决方法只是在设计不好的基础上的无奈之举。在我们的程序中应该尽可能避免循环/嵌套导入。如果多个模块确实需要共享一些数据,可以将共享的数据存储在某个地方,然后导入。

  绝对路径和相对路径当执行文件和导入文件不在同一个目录中时,导入可能会失败。

  1.解决方案1

  使用表单.进口.地方风格

  根据执行文件的路径逐层查找模块文件的路径。

  从美国汽车协会进口md

  表格aaa.bbb.md进口货币

  2.解决方案2

  使用sys.path系统路径

  模块的搜索顺序是:

  1.先凭记忆查一下。

  2.内置搜索

  3.在sys.path中找到执行文件

  启动脚本

  1.当__name__所在的文件是执行文件时,结果是__main__

  2.当__name__所在的文件是导入的文件(模板)时,结果是模块名。

  if name==name :

  是仅当文件被执行时才被执行的代码。

  写一个标准化的模块。写py文件的时候要时刻提醒自己,文件是自己用的,也可能被别人用。因此,代码的可读性和可维护性非常重要。因此,我们最好按照统一的规范编写一个模块,如下所示

  #!/usr/bin/env python #通常只在类似unix的环境中有效。它的作用是不需要直接调用解释器,使用脚本名就可以执行。

  该模块用于.#模块的文档描述

  导入# sys导入模块

  X=1 #定义全局变量。如果没有必要,最好使用局部变量,这样可以提高代码的可维护性,节省内存,提高性能。

  Class Foo: #定义类,写类的注释。

  Foo类是用来.

  及格

  Test (): #定义函数,写出函数的注释。

  功能测试用于…

  及格

  if _ _ name _ _== _ _ main _ _ :# main program

  Test() #当作为脚本执行时,执行此处的代码。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: