Python中使用封装类还是函数以及它们的区别

 更新时间:2024年10月19日 15:53:25   作者:重新启航  
在Python编程中,类和函数都是重要的代码组织工具,但它们在封装性、状态保持、可重用性、继承与多态、设计模式、代码组织、执行流程、参数传递、返回值和上下文管理等方面存在明显区别

环境

window10,pycharm2023.1.2

介绍

刚学python的同学中,肯定会碰到写函数和类,但实际使用起来可能不太区分的了。这里是个类的举例

class Person:
    def __init__(self, name, age):
        self.__name = name  # 私有属性
        self.__age = age    # 私有属性

    def get_name(self):
        return self.__name

    def set_name(self, name):
        self.__name = name

    def get_age(self):
        return self.__age

    def set_age(self, age):
        if age > 0:
            self.__age = age
        else:
            raise ValueError("Age must be positive")

    def introduce(self):
        print(f"Hello, my name is {self.__name} and I am {self.__age} years old.")

# 使用类
person = Person("Alice", 30)
print(person.get_name())  # 输出: Alice
print(person.get_age())   # 输出: 30
person.introduce()         # 输出: Hello, my name is Alice and I am 30 years old.

python封装为类及函数的区别_类

下面使用函数实现的方式

# 全局变量
person_name = None
person_age = None

def set_person(name, age):
    global person_name, person_age
    if age > 0:
        person_name = name
        person_age = age
    else:
        raise ValueError("Age must be positive")

def get_name():
    return person_name

def get_age():
    return person_age

def introduce():
    print(f"Hello, my name is {person_name} and I am {person_age} years old.")

# 使用函数
set_person("Alice", 30)
print(get_name())  # 输出: Alice
print(get_age())   # 输出: 30
introduce()         # 输出: Hello, my name is Alice and I am 30 years old.

可以换成闭包的方式更优雅,但以上胜在适合新手

类和函数区别

在 Python 中,将代码封装为类(Class)有多种优势。类是面向对象编程(OOP)的核心概念之一,它可以帮助你更好地组织和管理代码。而函数跟类的功能相似,简单的说更直接,但也有区别,以下是一些区别:

封装性:

  • 类:提供了一个封装数据和操作这些数据的方法的容器。类的属性和方法可以是私有的,从而隐藏内部实现细节。
  • 函数:不提供内置的封装机制。函数的参数和返回值是其与外界交互的主要方式。

 状态保持:

  • 类:可以通过实例变量(属性)保持状态。每个类的实例都可以有自己的状态。
  • 函数:不能保持状态。函数的执行结果取决于其输入参数,并且在函数调用结束后,其局部变量的状态就会丢失。

 可重用性:

  • 类:通过创建对象来重用代码。你可以创建多个类的实例,每个实例都有自己的状态和行为。
  • 函数:通过函数调用来重用代码。函数不保持状态,每次调用都是独立的。

 继承和多态:

  • 类:支持继承,允许创建新的类来扩展或修改现有类的行为。类可以实现多态,即同一个方法在不同的类中可以有不同的实现。
  • 函数:不支持继承。函数可以通过参数和返回值来实现多态性,但这种多态性是有限的。

 设计模式:

  • 类:是实现设计模式的基础,设计模式提供了解决特定问题的成熟模板。
  • 函数:虽然可以使用函数来实现一些设计模式,但这些模式通常与类的概念更紧密相关。

 代码组织:

  • 类:提供了一种将数据和行为组织在一起的方式,使得代码更加模块化和易于管理。
  • 函数:提供了一种将代码逻辑分割成可重复使用的小块的方式,有助于减少代码重复。

 执行流程:

  • 类:执行流程通常涉及对象的创建、消息传递和对象销毁。
  • 函数:执行流程通常是线性的,从函数的开始执行到结束。

 参数传递:

  • 类:在创建实例时传递参数,这些参数用于初始化对象的状态。
  • 函数:在函数调用时传递参数,这些参数用于控制函数的行为。

 返回值:

  • 类:可以有多个方法,每个方法都可以有不同的返回值。
  • 函数:通常只有一个返回值,或者通过输出参数返回多个值。

 上下文管理:

  • 类:可以使用上下文管理器来管理资源,如文件操作。
  • 函数:可以使用with语句和上下文管理器协议(__enter__和__exit__方法)来管理资源,但这种方式通常与类结合使用。

总结

在Python编程中,类和函数都是重要的代码组织工具,但它们在封装性、状态保持、可重用性、继承与多态、设计模式、代码组织、执行流程、参数传递、返回值和上下文管理等方面存在明显区别,类通过实例化对象提供了封装数据和操作数据的方法,支持状态保持、继承和多态,是实现设计模式的基础,而函数则是将代码逻辑分割成可重复使用的小块,执行流程通常是线性的,不支持状态保持和继承,总的来说,如果需要保持状态、实现复杂的交互或创建可重用的对象,类可能是更好的选择,如果只需要执行一个特定的任务且不需要保持状态,函数可能是更合适的选择。

直接看结果吧,如果需要保持状态、实现复杂的交互或创建可重用的对象,类可能是更好的选择。如果只需要执行一个特定的任务,且不需要保持状态,函数可能是更合适的选择,也就是简单方法,直接函数到底。

到此这篇关于Python中使用封装类还是函数以及它们的区别的文章就介绍到这了,更多相关Python中的封装类和函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中横向或纵向拼接两个表方法实例

    Python中横向或纵向拼接两个表方法实例

    最近要将两个表格合并,Python处理起来很简单,所以这篇文章主要给大家介绍了关于Python中横向或纵向拼接两个表的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • python实现遍历文件夹修改文件后缀

    python实现遍历文件夹修改文件后缀

    这篇文章主要介绍了python实现遍历文件夹修改文件后缀,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 图解Python中深浅copy(通俗易懂)

    图解Python中深浅copy(通俗易懂)

    这篇文章主要介绍了图解Python中深浅copy(通俗易懂),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 用python实现一幅春联实例代码

    用python实现一幅春联实例代码

    大家好,本篇文章主要讲的是用python实现一幅春联实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Pandas多个条件(AND,OR,NOT)中提取行

    Pandas多个条件(AND,OR,NOT)中提取行

    本文主要介绍了Pandas多个条件(AND,OR,NOT)中提取行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 解析PyCharm Python运行权限问题

    解析PyCharm Python运行权限问题

    这篇文章主要介绍了PyCharm Python运行权限问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Python数据清洗之利用pandas筛选数据详解

    Python数据清洗之利用pandas筛选数据详解

    这篇文章主要介绍了Python数据清洗之利用pandas筛选数据详解,Pandas是一个用于数据分析和处理的Python库,它提供了高效的数据结构和数据分析工具,使得数据的清洗、转换、分析和可视化变得更加容易和灵活,需要的朋友可以参考下
    2023-08-08
  • 如何利用opencv判断两张图片是否相同详解

    如何利用opencv判断两张图片是否相同详解

    这篇文章主要给大家介绍了关于如何利用opencv判断两张图片是否相同的相关资料,OpenCV是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法,需要的朋友可以参考下
    2021-07-07
  • python+tifffile之tiff文件读写方式

    python+tifffile之tiff文件读写方式

    今天小编就为大家分享一篇python+tifffile之tiff文件读写方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 使用Python的Turtle绘制哆啦A梦实例

    使用Python的Turtle绘制哆啦A梦实例

    今天小编就为大家分享一篇使用Python的Turtle绘制哆啦A梦实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论