【小白笔记】Python 中引用函数对象 和 调用函数
·
Python 中处理函数的两种基本方式:引用函数对象 和 调用函数。
s = my_abs
print("function object:", s)
s = my_abs(-10)
print("call function:", s)
两行代码的区别
这两行代码的区别在于:
- 第一行:引用函数对象
- 第二行:调用函数并执行
1. 引用函数对象(s = my_abs)
- 操作: 这一行代码是将函数
my_abs本身(即这个函数的内存地址、它的定义、它的代码逻辑)赋值给了变量s。 - 结果: 变量
s现在不是一个数值,而是一个函数对象(Function Object)。s成为了my_abs的另一个别名。 - 输出: 打印
s时,通常会输出一个描述该函数对象的字符串,例如<function my_abs at 0x...>,这表明s是一个位于特定内存地址的函数。 - 术语解释:
- 函数对象 (Function Object):在 Python 中,函数被视为一等公民(First-Class Citizen),这意味着它们可以像普通变量一样被赋值、作为参数传递、作为返回值返回。当你只写函数名而不加括号时,你得到的就是这个函数本身,即一个函数对象。
2. 调用函数并执行(s = my_abs(-10))
- 操作: 这一行代码是调用(Call)了函数
my_abs,并将-10作为参数(Argument)传递给它。函数会执行其内部的逻辑(例如计算绝对值)。 - 结果: 变量
s存储的是函数my_abs(-10)执行后返回的结果(Return Value)。如果my_abs是计算绝对值的函数,那么s的值就是 101010。 - 输出: 打印
s时,会输出函数返回的数值 101010。 - 关键: 这里的关键是函数名后面的 括号
()。它告诉 Python 解释器:“请执行这个函数!”
📝 总结对比
| 特征 | s = my_abs (第一行) |
s = my_abs(-10) (第二行) |
|---|---|---|
| 操作 | 引用 函数对象 | 调用 并 执行 函数 |
s 的类型 |
函数(Function) | 函数的返回值类型(例如:整数 int) |
s 的值 |
函数在内存中的地址/引用 | 函数执行后的结果(例如:10) |
| 用途 | 可以用 s 再次调用函数,例如 s(5) |
s 就是一个普通的数值,不能再像函数一样调用 |
💡 举例
假设 my_abs 函数定义如下:
def my_abs(x):
if x < 0:
return -x
return x
| 代码行 | 结果及含义 |
|---|---|
s = my_abs |
s 现在是 my_abs 函数本身。你可以执行 s(-5),它会返回 5。 |
s = my_abs(-10) |
my_abs(-10) 执行,返回 10。s 现在是数值 101010。你如果尝试执行 s(5),程序会报错,因为 101010 不是函数。 |
更多推荐
所有评论(0)