函数:def定义,有返回值
过程:def定义,没有返回值
函数式编程是 抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量。所以,任意函数,只要输入是确定的,输出就是确定的,就像数学里的函数,变量和因变量的关系是明确的。
Python对函数式编程提供部分支持,由于Python允许使用变量,所以Python不是纯函数式编程语言。
数学表达式:(1+2)*3-4
# 面向过程 var a = 1 + 2 var b = a * 3 var c = b - 4 # 函数式 var result = subtract(multiply(add(1, 2), 3), 4)
函数式编程的语言:lisp, hashshell,erlang
形参与实参
>>> def test(a, b): # a,b就是形参 ... print(a) ... print(b) ... >>> test(1, 2) # 1,2就是实参 1 2
默认参数(声明时)
>>> def test(a, b=2): # 这里的默认参数就是b ... print(a) ... print(b) ... >>> test(1) 1 2
位置参数与关键字参数(调用时)
>>> def test(a, b, c): ... print(a) ... print(b) ... print(c) ... >>> test(1,c=2,b=3) # 这里的1就是位置参数,2和3是关键字参数 1 3 2
不固定参数
*args:把对应的位置参数放到元组里
**kwargs:把对应的关键字参数放到字典里
>>> def test(*args, **kwargs): ... print(args) ... print(kwargs) ... >>> test(1,2,3,a=4,b=5) # 等价于>>> test(*[1,2,3], **{'b':5,'a':4}) (1, 2, 3) {'b': 5, 'a': 4}
声明函数时,不固定参数一定要放在位置参数和默认参数的后面
调用函数时,关键字参数一定要放在位置参数的后面