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