创建并访问Python包

包是构建许多包和模块的一种方式,有助于形成组织良好的数据集层次结构,使目录和模块易于访问。就像操作系统中有不同的驱动器和文件夹来帮助我们存储文件一样,软件包也可以帮助我们存储其他子软件包和模块,以便用户在必要时使用。

null

创建和探索软件包

为了告诉Python一个特定的目录是一个包,我们创建了一个名为_init__的文件。py,然后将其视为一个包,我们可以在其中创建其他模块和子包。这个______;。py文件可以留空,也可以使用包的初始化代码进行编码。 要用Python创建包,我们需要遵循以下三个简单步骤:

  1. 首先,我们创建一个目录并给它一个包名,最好与它的操作相关。
  2. 然后我们把类和必需的函数放进去。
  3. 最后,我们创建一个_init__;。py文件,让Python知道该目录是一个包。

创建包的示例

让我们看看这个例子,看看如何创建一个包。让我们创建一个名为Cars的包,并在其中构建三个模块,即宝马、奥迪和日产。

  1. 首先,我们创建一个目录并将其命名为Cars。
  2. 然后我们需要创建模块 .为此,我们需要创建一个名为Bmw的文件。py并通过将此代码放入其中来创建其内容。

    # Python code to illustrate the Modules
    class Bmw:
    # First we create a constructor for this class
    # and add members to it, here models
    def __init__( self ):
    self .models = [ 'i8' , 'x1' , 'x5' , 'x6' ]
    # A normal print function
    def outModels( self ):
    print ( 'These are the available models for BMW' )
    for model in self .models:
    print ( ' %s ' % model)

    
    

    然后我们创建另一个名为Audi的文件。py并向其添加具有不同成员的类似类型的代码。

    # Python code to illustrate the Module
    class Audi:
    # First we create a constructor for this class
    # and add members to it, here models
    def __init__( self ):
    self .models = [ 'q7' , 'a6' , 'a8' , 'a3' ]
    # A normal print function
    def outModels( self ):
    print ( 'These are the available models for Audi' )
    for model in self .models:
    print ( ' %s ' % model)

    
    

    然后我们创建另一个名为日产的文件。py并向其添加具有不同成员的类似类型的代码。

    # Python code to illustrate the Module
    class Nissan:
    # First we create a constructor for this class
    # and add members to it, here models
    def __init__( self ):
    self .models = [ 'altima' , '370z' , 'cube' , 'rogue' ]
    # A normal print function
    def outModels( self ):
    print ( 'These are the available models for Nissan' )
    for model in self .models:
    print ( ' %s ' % model)

    
    

  3. 最后,我们创建_init__;。py文件。 该文件将放在Cars目录中,可以留空,也可以将初始化代码放入其中。

    from Bmw import Bmw
    from Audi import Audi
    from Nissan import Nissan

    
    

    现在,让我们使用我们创建的包。为此,制作一个样品。在Cars软件包所在的同一目录中创建py文件,并向其添加以下代码:

    # Import classes from your brand new package
    from Cars import Bmw
    from Cars import Audi
    from Cars import Nissan
    # Create an object of Bmw class & call its method
    ModBMW = Bmw()
    ModBMW.outModels()
    # Create an object of Audi class & call its method
    ModAudi = Audi()
    ModAudi.outModels()
    # Create an object of Nissan class & call its method
    ModNissan = Nissan()
    ModNissan.outModels()

    
    

    访问软件包的各种方式

    让我们看看这个例子,尝试将包与它联系起来,以及如何访问它。 图片[1]-创建并访问Python包-yiteyi-C++库

    1. 包装进口 假设汽车和品牌目录是软件包。要使它们成为一个包,它们都必须包含_init__;。其中的py文件,要么为空,要么带有一些初始化代码。让我们假设所有的汽车模型都是模块。使用包有助于单独或整体导入任何模块。 假设我们想要宝马i8。其语法如下:
      'import' Cars.Bmw.x5 

      在导入一个包或子包或模块时,Python会搜索整个目录树以查找特定的包,并按照点运算符的编程进行系统化处理。 如果任何模块包含一个函数,我们想导入它。例如,a8有一个函数get_buy(1),我们想导入它,语法是:

      import Cars.Audi.a8
      Cars.Audi.a8.get_buy(1)
      

      在使用导入语法时,必须记住最后一个属性必须是子包或模块,而不应该是任何函数或类名。

    2. 包装中的“从…导入” 现在,每当我们需要使用这样的函数时,我们都需要在导入父包后编写整个长行。为了以更简单的方式解决这个问题,我们使用“from”关键字。为此,我们首先需要使用“from”和“import”引入模块:
      from Cars.Audi import a8

      现在我们可以使用

      a8.get_buy(1)

      还有另一种方式,它不那么冗长。我们可以直接导入该函数,并在必要时使用它。首先使用以下方法导入:

      from Cars.Audi.a8 import get_buy

      现在从任何地方调用函数:

      get_buy(1)
    3. 包装中的“从…导入*” 在使用 从…进口 语法,我们可以将任何东西从子模块导入到同一模块中定义的类、函数或变量。如果导入部分中提到的属性没有在包中定义,那么编译器会抛出ImportError异常。 导入子模块可能会导致显式导入子模块时出现不必要的副作用。因此,我们可以使用*语法一次性导入各种模块。语法是:
      from Cars.Chevrolet import *

      这将从子包中导入所有内容,即模块、子模块、函数、类。

    本文由 金莫伦卡 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

    如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享