不管别人怎么说或怎么想,我从未觉得 Python 受到来自函数式语言的太多影响。我
非常熟悉命令式语言,如 C 和 Algol 68,虽然我把函数定为一等对象,但是我并不
把 Python 当作函数式编程语言。
——Guido van Rossum
Python 仁慈的独裁者
在 Python 中,函数是一等对象。编程语言理论家把“一等对象”定义为满足下述条件的程
序实体:
- 在运行时创建
- 能赋值给变量或数据结构中的元素
- 能作为参数传给函数
- 能作为函数的返回结果
在 Python 中,整数、字符串和字典都是一等对象——没什么特别的。接下来的内容将重点讨论把函数作为对象的影响和实际应用。
比如说我要将之前函数修改一个名字,使用新的函数名去调用旧的函数
def f(x):
y = 5 * x + 6
# return 关键字 返回一个内容
return y
d = f
print(d(x) +d(y))
把函数当参数传递
案例需求 f(1) + f(2) + f(3) + f(4) + f(5)
print(f(1) + f(2) + f(3) + f(4) + f(5))
# 把函数当参数传递
print(f(f(1)))
设:求 f(1) + f(2) + f(3) + f(4) + f(5) + ...+f(N)
def sum_(N):
total = 0
for i in range(1, N + 1):
total += f(N)
return total
print_(sum_(5))
函数注解(了解)
def sum_(N):
"""求 f(1) + f(2) + f(3) + f(4) + f(5) + ...+f(N)函数的值"""
total = 0
for i in range(1, N + 1):
total += f(N)
return total
print_(sum_.__doc__)
# 输出结果:求 f(1) + f(2) + f(3) + f(4) + f(5) + ...+f(N)函数的值
def f1(x):
x = x * x
return x
def f2(x):
x = x * x
f1(num)
print(num)
f2(num)
print(num)