函数是独立可调用对象,方法是绑定在对象上的函数;函数直接调用如greet("Alice"),方法需通过对象调用如d.bark(),关键区别在于调用方式及是否隐含绑定对象参数。

函数是独立存在的可调用对象,方法是绑定在对象(通常是类实例)上的函数。
函数:不依赖对象,直接调用
函数是定义在模块或全局/局部作用域中的独立代码块,调用时不需要依附于任何对象。比如 len()、print()、max() 都是内置函数;你自己用 def 定义的也是函数:
- def greet(name): return f"Hello, {name}"
- 调用方式:greet("Alice") —— 直接传参,不涉及对象
方法:属于对象,隐含第一个参数
方法本质是定义在类内部的函数,但被“绑定”到了类或其实例上。调用时会自动传入绑定的对象作为第一个参数(通常是 self 或 cls):
- class Dog: def bark(self): return "Woof!"
- d = Dog(),然后 d.bark() 就是调用实例方法,self 自动指向 d
- 类方法(@classmethod)和静态方法(@staticmethod)也属于方法,只是绑定规则不同
关键区别在调用方式和绑定关系
- 函数调用:纯靠名字 + 括号,如 abs(-5)
- 方法调用:必须通过对象(或类)访问,如 "hello".upper()、list.append([1], 2)
- 底层看:方法其实是“带绑定的函数”,Python 在点号调用时自动做了封装(例如 str.upper 是函数,"abc".upper 是绑定方法)
一个简单验证方式
你可以用 type() 和 repr() 看区别:
网奇.NET网络商城系统是基于.Net平台开发的免费商城系统。功能强大,操作方便,设置简便。无需任何设置,上传到支持asp.net的主机空间即可使用。系统特色功能:1、同时支持Access和SqlServer数据库;2、支持多语言、多模板3、可定制缺货处理功能4、支持附件销售功能5、支持会员组批发功能6、提供页面设计API函数7、支持预付款功能8、配送价格分地区按数学公式计算9、商品支持多类别,可
立即学习“Python免费学习笔记(深入)”;
- type(len) →
-
type("a".upper) →
(实例方法) -
type(str.upper) →
(未绑定时就是普通函数)
基本上就这些。记住:有没有“.”前面的对象,是区分函数和方法最直观的信号。










