专业编程基础技术教程

网站首页 > 基础教程 正文

Python基础编程——模块的基本概念

ccvgpt 2024-11-22 11:25:46 基础教程 1 ℃

到此,我们已经介绍了Python语言的大部分基础知识,Python不仅语言核心非常强大,还提供了其他工具以供我们在开发中使用。标准安装包含一组成为标准库的模块,例如:math、random、time等。

模块

模块就是我们所编写的Python程序,我们在之前的章节中有使用过import关键字来将模块导入到我们的程序中。如果我们要编写自己的模块,需要将编写的程序保存到一个.py的文件中,这个文件的文件名就是我们的模块名。例如:我们编写了一个hello_world.py的文件,那么在这里hello_world就是我们的模块名。在Python中,我们自己编写的模块所存放的路径也很重要,当导入我们自己编写的模块时,出现的最多的问题,找不到模块而导致程序执行失败。

Python基础编程——模块的基本概念

我们在前面的章节中,所有的示例程序基本上都是编写在.py的文件中,那么我们可以将它们作为模块来导入。下面我们再来看一个简单的模块,具体如下hello_world.py程序所示:

,hello_world.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def hello():
    print('Hello World!')

我们在另一个程序中来导入hello_world.py,具体如下test_hello_world.py程序所示:

test_hello_world.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import hello_world

hello_world.hello()

程序执行结果如下所示:
Hello World!

通过上面的两个程序,我们简单介绍了如何自定义一个模块以及在其他的程序中导入我们自定义的模块。

需要注意的是:模块并不是用来执行操作的,而是用于定义变量、函数、类等的,定义只需要做一次,因此导入模块一次和多次的效果相同,我们在开发中只需要导入一次模块即可。

模块的作用

模块是用来下定义的,在首次被导入程序时执行,这虽然有点用,但是用处不大。让模块值得被创建的原因在于它们像类一样,有自己的作用域。这意味着在模块中定义的类和函数以及其进行赋值的变量都将成为模块的属性。并且有了模块,能够大大提高程序的复用性,减少重复开发的工作量。

在模块中定义函数

我们先来编写一个简单的模块,只在模块中定义一个用于打招呼的函数,具体如下say_hi_module.py程序所示:

say_hi_module.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def say_hi():
    print('你好,我的名字是Python编程爱好者!')

然后我们在另一个程序中导入say_hi_module.py模块,具体如下test_say_hi_module.py程序所示:

test_say_hi_module.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import say_hi_module

say_hi_module.say_hi()

程序执行结果如下所示:
你好,我的名字是Python编程爱好者!

上面的test_say_hi_module.py程序本身也是一个模块,执行这个模块时,相当于在这个模块的作用域内定义了say_hi函数,在模块的全局作用域内定义的我们都可以直接使用类似say_hi_module.say_hi()这样的方式进行访问。

我们没有在test_say_hi_module.py程序中重新定义say_hi函数,主要是为了代码能够复用,不用在需要使用say_hi函数的地方进行重新定义。因此,为了提高代码的复用性,务必将其模块化。

在模块中添加测试代码

模块用于定义函数和类等,但在有些情况下,添加一些测试代码来检查情况是否符合预期。例如我们在前面的say_hi_module.py程序中添加一行调用函数的代码,看是否能够打印我们想要的结果,具体入下say_hi_module.py程序所示:

say_hi_module.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def say_hi():
    print('你好,我的名字是Python编程爱好者!')

# 测试代码
say_hi()

如果将这个模块作为普通程序运行,他依然可以正常运行,并打印我们想要的结果。但是如果是将其作为一个模块,在另一个程序中导入,以便我们能够使用say_hi函数,测试代码也将会被执行。

这并不是我们想要的结果,要避免这种情况,关键是检查模块是作为程序运行还是被导入另一个程序。为此,我们需要使用变量__name__。我们修改前面的模块程序,具体如下say_hi_module.py程序所示:

say_hi_module.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def say_hi():
    print('你好,我的名字是Python编程爱好者!')


def test():
    say_hi()


if __name__ == '__main__':
    test()

我们再次执行程序test_say_hi_module.py时,其执行结果如下:

你好,我的名字是Python编程爱好者!

这是因为,在主程序中时,变量__name__的值是'__main__',而在导入模块中的程序中时,这个变量被设置为为模块的名称。因此在不会执行模块if语句里面的语句块。如果将这个模块作为程序运行,将会执行函数say_hi,如果是作为模块导入到其他程序中,则其与普通模块是一样的。

在上面的程序中,我们将测试代码放到了一个test函数中,虽然可以直接将其放到if语句里面,但是,这样做的好处是我们可以在导入模块的程序中对其进行测试。

总结

本节主要介绍了以下内容:

  1. 模块的概念:模块的本质就是一个.py的程序文件。
  2. 模块的作用:模块是用于定义函数、类、属性等的,提高代码的复用性。
  3. 在模块中定义函数的函数,在导入程序后,我们可以像访问类属性那样直接访问模块中的函数,模块中定义的类、变量也是一样的。
  4. 在模块中添加测试代码,需要注意测试代码的执行条件。

下一节我们将会介绍模块的存放路径的问题,这也是我们在导入自定义模块容易出问题的地方,敬请关注!

如果有需要文中小程序的可以私信我哟!

创作不容易,还请点个赞!喜欢的小伙伴请点关注、收藏!

欢迎大家转发、评论!

#python##Python##Python基础##python打卡##Python编程从入门到实践#

Tags:

最近发表
标签列表