Python中函数是一等公民,即function类型的对象,可赋值、存储、传递和返回;调用func()执行函数,而func仅传递函数对象本身。

因为 Python 中函数是一等公民(first-class object),本质上是对象,和其他变量一样可以被赋值、存储、传递和返回。
函数在 Python 中是对象
Python 里每个函数都是 function 类型的实例,拥有属性(如 __name__、__doc__)和方法。你可以像操作字符串或列表那样操作函数:
- 把函数赋给变量:
my_func = len - 把函数放进列表:
[len, print, str] - 把函数作为字典的值:
{"check": isinstance, "count": len}
调用与不调用的区别很关键
写 func 是传递函数本身(对象引用),写 func() 是立刻执行并传递返回值。这是初学者常混淆的地方:
-
map(str, [1, 2, 3])→ 正确:传入str函数对象 -
map(str(), [1, 2, 3])→ 报错:试图调用str()无参形式,再传结果(空字符串)
常见应用场景
函数作参数不是炫技,而是解决实际问题的核心机制:
YXPHP6系统可以看做是一个模版平台,而且它又能独立工作. 而且YXPHP6系统也不需要数据库支持. 你可以开发自己的模板,也可以同步官方的模板后进行自己的二次开发,前提是您对YXPHP6要有一定的了解.YXPHP6不仅可以用作企业建站,甚至是blog,只要是您能想到的,YXPHP6几乎都可以胜任. 因为YXPHP6系统本身与模板之间可以说是独立运行的.也就是说,不管你做什么样的网站或者是应用,
立即学习“Python免费学习笔记(深入)”;
-
高阶函数:如
sorted(data, key=str.lower),用str.lower控制排序逻辑 -
回调机制:如
button.on_click(handle_click),点击时才调用传入的函数 -
装饰器基础:装饰器本质就是接收函数、返回新函数的函数,例如
@timer就是timer(my_func)
自定义接受函数的函数很简单
只要把形参当作普通变量名,内部用 () 调用即可:
def apply_to_each(items, operation):
return [operation(x) for x in items]
result = apply_to_each([1, 2, 3], lambda x: x * 2) # [2, 4, 6]
result = apply_to_each(["a", "B"], str.upper) # ["A", "B"]
不复杂但容易忽略:函数能传进去,是因为它和 42、"hello" 一样,是内存中一个实实在在的、可被引用的东西。









