当前位置: 首页 > news >正文

[Python] 区分方法 函数

文章目录

  • 函数(Function)与方法(Method)的区别
    • 一、函数(Function)
      • 1 定义
      • 2 示例
      • 3 特点
    • 二、方法(Method)
      • 1 定义
      • 2 示例
      • 3 特点
    • 三、函数 VS 方法
    • 四、Python 中的三种方法类型
      • 1 示例:
    • 五、总结

函数(Function)与方法(Method)的区别

在 Python 中,函数和方法 都是用于封装可重用代码的结构,但它们的使用场景和定义方式不同。

一、函数(Function)

1 定义

  • 使用 def 关键字定义。
  • 不属于任何类,可以独立存在。

2 示例

def greet(name):print(f"Hello, {name}!")greet("Alice")

3 特点

  • 定义位置:可以在模块层级、脚本中直接定义
  • 调用方式: 直接通过函数名调用:greet("Alice")
  • 参数:没有隐式传入的 self 或 [cls]

二、方法(Method)

1 定义

  • 定义在 类内部 的函数。
  • 第一个参数通常是 self(实例方法)或 [cls]

2 示例

class Person:def __init__(self, name):self.name = namedef greet(self):print(f"Hello, I'm {self.name}")p = Person("Bob")
p.greet()

3 特点

  • 定义位置 :必须写在类内部
  • 调用方式:通过对象调用:p.greet(),自动传入 self
  • 参数: 第一个参数通常是 self,表示对象本身

三、函数 VS 方法

类比函数方法
功能独立功能块属于某个对象的行为
举例len(list)print()list.append(1)str.upper()
谁拥有它?没有“主人”属于某个类或对象

四、Python 中的三种方法类型

类型第一个参数使用场景
实例方法self最常见,操作对象数据
类方法cls操作类本身,如构造器工厂
静态方法工具函数,逻辑与类/对象无关

1 示例:

class MyClass:@classmethoddef class_method(cls):print("I'm a class method")@staticmethoddef static_method():print("I'm a static method")# 调用类方法
MyClass.class_method()# 调用静态方法
MyClass.static_method()

五、总结

  • 函数 是独立存在的,不依附于任何类或对象;
  • 方法 是定义在类中的函数,必须通过对象或类来调用;
  • 在类中写的 def xxx(self): ... 都是方法;
  • 在模块顶层写的 def xxx(): ... 是函数。
http://www.dtcms.com/a/271326.html

相关文章:

  • 企业级智能体平台怎么选?字节、腾讯、360、FastGPT选哪个?
  • 【牛客刷题】小欧的选数乘积
  • K8S使用命令多集群管理配置
  • EUDR法案的核心内容,EUDR未来展望,EUDR对全球供应链的影响
  • Excel 常用高级用法
  • [特殊字符] Python 批量生成词云:读取词频 Excel + 自定义背景 + Excel to.png 流程解析
  • 【踩坑】python写超长字符到excel中被截断
  • TDengine 集群部署及启动、扩容、缩容常见问题与解决方案
  • 自建ELK vs 云商日志服务:成本对比分析
  • Apache Tomcat SessionExample 漏洞分析与防范
  • AMIS全栈低代码开发
  • 【NVIDIA-H100】基于 nvidia-smi 数据H100 GPU 功耗异常深度分析与解决方案
  • PiscTrace应用:从 YOLO-Pose 到深蹲与引体向上计数:实时健身动作分析与实现
  • 语音大模型速览(二)- cosyvoice
  • Flink-1.19.0源码详解-番外补充4-JobGraph图
  • Ubuntu 下 MySql 使用
  • qt-C++笔记之布局管理`space` 和 `margin`的区别
  • SQL注入与防御-第六章-3:利用操作系统--巩固访问
  • kbmMemTable Pro 7.82 Delphi 11 源代码
  • Spectre(幽灵漏洞)是什么?
  • Python-FAQ-单例模式
  • MyBatis之数据操作增删改查基础全解
  • Java常用设计模式大全
  • Kubernetes 存储入门
  • HTTP请求走私漏洞
  • 【Python】FastApi
  • P1009 [NOIP 1998 普及组] 阶乘之和
  • HashMap中get()、put()详解
  • 代码审计-shiro漏洞分析
  • Explain关键字