Python 函数function和方法method区别

文章目录

  • Python 中函数和方法的主要区别如下:
    • 1. **定义位置**:
    • 2. **调用方式**:
    • 3. **`self`参数**:
    • 4. **属性**:
    • 5. **命名空间**:
    • 6. **用途**:
  • 总结
    • 1. **普通函数(未定位在类里),都是函数.**
    • 2. **静态方法(@staticmethod),都是函数。**
    • 3. **类方法(@classmethod),都是方法。**
    • 4. **方法和函数区分没有那么明确,而是更加灵活了,一个函数有可能是方法也有可能是函数。**

Python 中函数和方法的主要区别如下:

1. 定义位置:

  • 函数可以定义在模块(.py文件)的任何位置。
  • 方法必须定义在类(class)的内部。

2. 调用方式:

  • 函数可以直接调用,如 my_function(args)
  • 方法需要通过类的实例来调用,如 instance.my_method(args)

3. self参数:

  • 函数没有 self 参数。
  • 方法必须有 self 作为第一个参数,用于表示当前实例。

4. 属性:

  • 函数是独立的,没有任何属性。
  • 方法可以访问类的属性和其他方法。

5. 命名空间:

  • 函数位于模块的命名空间中。
  • 方法位于类的命名空间中。

6. 用途:

  • 函数用于实现独立的功能。
  • 方法用于定义对象的行为和操作。

下面是一个简单的例子来说明函数和方法的区别:

# 函数
def greet(name):print(f"Hello, {name}!")greet("Alice")  # 调用函数# 类和方法
class Person:def __init__(self, name):self.name = namedef greet(self):print(f"Hello, I'm {self.name}!")person = Person("Bob")
person.greet()  # 调用方法

在这个例子中,greet() 函数是独立的,而 greet() 方法是 Person 类的一部分。函数直接调用,而方法需要通过类的实例来调用,并使用 self 参数访问实例属性。

总的来说,函数和方法都是 Python 中的重要概念,但它们的使用场景和语义略有不同。理解这些差异有助于编写更加清晰和可维护的 Python 代码。

总结

1. 普通函数(未定位在类里),都是函数.

2. 静态方法(@staticmethod),都是函数。

3. 类方法(@classmethod),都是方法。

4. 方法和函数区分没有那么明确,而是更加灵活了,一个函数有可能是方法也有可能是函数。

关于#4的理解,

  • 类中定义一个方法, 首参数为self时候, 此方法为实例方法
  • 方法首参数部位self/cls, 也不会报错, 这时即为函数
  • 注: 虽然这样, 建议不要在类中定义函数, 可以以静态方法形式存在, 这样可以用cls调用方法, 也可以用self调用方法

代码示例如下

class People:@staticmethoddef get_people():print("people")def jump():print("jump")People.get_people()
#people
People.jump()
#jump
p = People()
p.get_people()
#people
p.jump()
# Traceback (most recent call last):
#   File "c:\Python\Projects\self-code\self_code\learn.py", line 24, in <module>
#     p.jump()
# TypeError: jump() takes 0 positional arguments but 1 was given

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/821742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel 无法正确处理 1900-03-01 前的日期

问题由来&#xff1a;excel 用公式 TEXT(A1,"yyyy-mm-dd") 转日期时&#xff0c;当A1 的值等于59 的时候&#xff0c;返回值是1900-02-28&#xff1b;当A1 的值等于61 的时候&#xff0c;返回值是1900-03-01&#xff1b;那么当 A1的值为 60 的时候&#xff0c;返回值…

【iOS】——SDWebImage源码学习

文章目录 一、SDWebIamge简介二、SDWebImage的调用流程SDWebImage源码分析1.UIImageViewWebCache层2.UIViewWebCache层3.SDWebManager层4.SDWebCache层5.SDWebImageDownloader层 一、SDWebIamge简介 SDWebImage是iOS中提供图片加载的第三方库&#xff0c;可以给UIKit框架中的控…

C语言【数组】

一、数组基本语法 1. 什么是数组 数组是c语言的一种数据结构&#xff0c;用于存储一组具有相同数据类型的数据&#xff1b; 数组中每个元素可以通过下标进行访问&#xff0c;索引从0开始&#xff0c;最大值为数组长度-1。 2. 数组的使用 类型 数组名[元素个数]; int arr[5]…

http 3.0 QUIC 方案的原理解析

QUIC&#xff08;Quick UDP Internet Connections&#xff09;是一种基于用户数据报协议&#xff08;UDP&#xff09;的高效、可靠的传输协议&#xff0c;由Google开发并在IETF标准化为RFC 9000。QUIC的目标是解决TCP和TLS在现代互联网应用场景中的一些局限性&#xff0c;特别是…

ICV:《中美量子产业融资比较分析》

近日&#xff0c;全球前沿科技咨询公司ICV发布了A Comparative Analysis of Quantum Industry Financing in the U.S and China&#xff08;美国和中国量子产业融资比较分析&#xff09;报告。该报告旨在对中美两国在量子技术领域的投融资情况进行比较分析&#xff0c;探讨其差…

创新教育:如何用Python和机器学习改变在线教育体验

在线教育的兴起是技术进步带来的直接结果&#xff0c;它打破了传统教育的地域和时间限制&#xff0c;为广大学习者提供了前所未有的便利。然而&#xff0c;随着在线教育平台的数量激增&#xff0c;如何在保证教育质量的同时提升用户体验&#xff0c;已成为行业关注的焦点。本文…

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示16行点x64列点字模串的应用

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示16行点x64列点字模串的应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显…

Rust开发笔记 | 所有权系统及其对内存管理的影响

Rust 是一门以系统编程为主要应用场景的编程语言&#xff0c;它提供了无需垃圾回收机制就能安全实现内存管理的特性。其中&#xff0c;所有权&#xff08;Ownership&#xff09;系统是 Rust 语言最核心的特点之一&#xff0c;它能够保证内存安全&#xff0c;同时避免数据竞争。…

MySQL 试图

视图功能在 5.0 以后的版本启用 视图是一张虚表。数据表确实包含了具体数据并且保存到硬盘中的实表。视图使用数据检索语句动态生 成的一张虚表。每一次数据服务重启或者系统重启之后&#xff0c;在数据库服务启动期间&#xff0c;会使用创建视图的语 句重新生成视图中的数据&…

详解UART通信协议以及FPGA实现

文章目录 一、UART概述二、UART协议帧格式2.1 波特率2.2 奇校验ODD2.3 偶校验EVEN 三、UART接收器设计3.1 接收时序图3.2 Verilog代码3.3 仿真文件测试3.4 仿真结果3.5 上版测试 四、UART发送器设计4.1 发送时序图4.2 Verilog代码4.3 仿真文件测试4.4 仿真结果4.5 上板测试 五、…

用html画一个睡觉的熊动画

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>睡觉的熊动画</title><link rel"stylesheet" href"./style.css"> </head><body><div id"contain…

免费的 ChatGPT、GPTs、AI绘画(国内版)

&#x1f525;博客主页&#xff1a;白云如幻❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚…

袁庭新ES系列14节 | 搭建Elasticsearch集群

前言 单节点的Elasticsearch需要在处理大量数据的时候需要消耗大量内存和CPU资源&#xff0c;数据量大到一定程度就会产生处理瓶颈&#xff0c;甚至会出现宕机。 为了解决单节点ES的处理能力的瓶颈及单节点故障问题&#xff0c;我们考虑使用Elasticsearch集群。接下来袁老师带…

【前后端的那些事】SpringBoot 基于内存的ip访问频率限制切面(RateLimiter)

文章目录 1. 什么是限流2. 常见的限流策略2.1 漏斗算法2.2 令牌桶算法2.3 次数统计 3. 令牌桶代码编写4. 接口测试5. 测试结果 1. 什么是限流 限流就是在用户访问次数庞大时&#xff0c;对系统资源的一种保护手段。高峰期&#xff0c;用户可能对某个接口的访问频率急剧升高&am…

【算法刷题day27】Leetcode:39. 组合总和、40. 组合总和 II、131. 分割回文串

文章目录 Leetcode 39. 组合总和解题思路代码总结 Leetcode 40. 组合总和 II解题思路代码总结 Leetcode 131. 分割回文串解题思路代码总结 草稿图网站 java的Deque Leetcode 39. 组合总和 题目&#xff1a;39. 组合总和 解析&#xff1a;代码随想录解析 解题思路 还是回溯三部…

记录一下易语言post get使用WinHttp的操作

最近在学易语言&#xff0c;在进行通讯的时候&#xff0c;出现一些问题&#xff0c;现在记录下来&#xff0c;避免以后继续忘记&#xff0c; 先声明文本型变量jsonPostData jsonPostData &#xff1d; “{hostname:” &#xff0b; hostnameTxt &#xff0b; “,hardcode:” &…

【ARM 裸机】I.MX 启动方式之启动头文件 2

接上一节&#xff1a;【ARM 裸机】I.MX 启动方式之启动头文件 1&#xff1b; 2.3、DCD DCD&#xff0c;Device Configuration Data &#xff0c;就是配置 6ULL 寄存器的&#xff0c;DCD 数据最大限制 1768 字节&#xff1b; CCGR0 是不是很熟悉&#xff1f;对&#xff0c;在…

【数据挖掘】课程大纲

第1章 数据挖掘基础 1.1 某知名连锁餐饮企业的困惑 1.2 从餐饮服务到数据挖掘 1.3 数据挖掘的基本任务 1.4 数据挖掘建模过程 1.4.1 定义挖掘目标 1.4.2 数据取样 1.4.3 数据探索 1.4.4 数据预处理 1.4.5 挖掘建…

在flask服务中远程读取该Excel的内容

在flask服务中远程读取该Excel的内容: from flask import Flask, jsonify import requests import pandas as pd import os import tempfile app Flask(__name__) app.route(/read_excel, methods[GET]) def read_excel(): # Excel 文件的 URL excel_url http…

选购AWS服务时需要注意哪些问题?九河云详细评测

随着云计算技术的广泛应用,亚马逊网络服务(AWS)受到越来越多企业的欢迎。这是因为他们提供了丰富的云计算产品和服务,可满足企业不同阶段的IT需求。但在选购AWS服务时,企业仍需谨慎考虑以下几个方面&#xff1a; 首先要确定自身的需求&#xff0c;并评估成本效益。企业在选择A…