当前位置: 首页 > 后端技术 > Python

08-Python中的包和模块

时间:2023-03-26 18:22:16 Python

您已经学会了如何通过一次定义函数作业来重用程序中的代码。那么如果你想在你写的其他程序中重用一些函数怎么办?正如你可能想象的那样,答案是模块(Modules)编写模块的方法有很多种,其中最简单的是创建一个包含函数和变量的扩展名为.py的文件。from..import语句import语句允许模块中的代码在当前运行的程序文件中使用。通过将函数存储在单独的文件中,可以隐藏程序代码的细节,专注于程序的高层逻辑。这也允许您在许多不同的程序中重用函数。通过将函数存储在单独的文件中,这些文件可以与其他程序员而不是整个程序共享。了解如何导入函数还可以让您使用其他程序员编写的函数库。casefrommathimportsqrtprint("16squarerootis",sqrt(16))outputs16squarerootis4.0模块名每个模块都有一个名字,模块中的语句可以找到所在模块的名字。这个对于确定模块是独立运行还是导入运行的特定目的很有用。如前所述,当一个模块被首次导入时,它包含的代码将被执行。我们可以使用此功能使模块的行为有所不同,具体取决于它是供自己使用还是从另一个模块导入。这可以通过使用模块的名称属性来实现。case(保存为module_using_name.py):if__name__=='__main__':print('这个程序自己运行')else:print('我从其他模块导入的')输出:这个程序自己运行Importinthepythonconsoleimportmodule_using_name#Output:Iimportedfromothermodules它是如何工作的每个Python模块都定义了它的name属性。如果它与主属性相同,则此模块由用户独立运行,因此我们可以采取适当的措施。编写您自己的模块编写您自己的模块很容易,这实际上是您一直在做的事情!这是因为每个Python程序也是一个模块。您只需要确保它具有.py扩展名。下面的案例会给出明确的解释。示例(保存为mymodule.py):defsay_hi():print('嗨,我的模块正在说话。')__version__='0.1'请记住,这个模块应该与我们要去的其他程序放在同一个程序中要导入此模块目录,另一个模块(保存为mymodule_demo.py):它是如何工作的你会注意到我们使用相同的点符号来访问模块中的成员。Python很好地重用了它的符号,充满了“Pythonic”的感觉,这让我们可以做同样的事情而不需要学习新的方法。这是一个使用from...import语法的示例(保存为mymodule_demo2.py):frommymoduleimportsay_hi,__version__say_hi()print('Version',__version__)mymodule_demo2.py的输出与mymodule_demo的输出相同.py的内容是一样的。这里需要注意的是,如果导入mymodule的模块中已经存在nameversion,则会造成冲突。这可能是因为每个模块通常使用这个名称来声明各自的版本号。因此,我们一般建议最好使用import语句,虽然这会让你的程序稍微长一些。您还可以使用:frommymoduleimport这将导入所有公共名称,如say_hi但不导入版本名称,因为后者以双下划线开头。警告:请记住,您应该避免使用frommymoduleimport*这种形式。Python的一大指导原则是“清晰胜于晦涩”,因此您甚至不知道函数定义在何处以及包在何处导入。现在,您必须开始遵循用于组织程序的层次结构。变量通常在函数内部,函数和全局变量通常在模块内部。如果你想组织这些模块,你应该怎么做?这是包应该进来的地方。包是一个文件夹,其中包含模块和一个特殊的__init__.py文件,该文件告诉Python这个文件夹是特殊的,因为它包含Python模块。|||----|----||具有特定功能的工具|一个功能强大的工具箱,包含许多工具||python中的模块|python中的包(模块包/包)|考虑一个package_my目录下的demo1.py、demo2.py、__init__.py文件,test.py是测试调用包的代码,目录结构如下:test.pypackage_my/demo1.pydefrunfun1():print"Iamindemo1.py"package_my/demo2.pydefrunfun2():print"Iamindemo2.py"package_my/__init__.pyif__name__=='__main__':print'Runasmainprogram'否则:print'package_myinitialization'test.pyfrompackage_my.demo1importrunfun1frompackage_my.demo2importrunfun2resultpackage_myInitializationSummary正如函数是程序的可重用部分一样,模块也是可重用的程序。包是组织模块的另一种层次结构。Python自带的标准库就是这样一组相关的包和模块。我们已经了解了如何使用这些模块并创建您自己的模块。IT入门感谢您关注练习地址:www.520mg.com/it