Python公开课 - 详解函数

前言

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。对于代码开发人员来说,函数编程的基础。

函数的要素

对于一个函数来说,需要包含以下几个要素:

  • 函数名 - 函数的调用名称
  • 入参 - 传入函数的参数
  • 出参 - 传出函数的参数
  • 返回结果 - 执行函数的返回值
def TestFunc(in_para, out_para):
    out_para.append('出参')
    return 0

out_para = []
print(TestFunc(1, out_para))
print(out_para)

示例说明:

  • TestFunc: 函数名
  • in_para: 入参,一般不可改变,在C++ 中一般会以const来修饰,但是Python中没有提供该修饰词,这也是C++语法更严格更安全的提现
  • out_para: 出参,根据函数计算,可以修改。在Python中定义函数时,想利用参数输出某些处理过的变量,那必须使用可以更改的对象,如list,dict等
  • return: 为函数返回,可以返回一个或者多个

函数参数

位置参数

def ComputeFunc(x):
    return x * x

ComputeFunc(6)

当我们调用ComputeFunc函数时,必须传入有且仅有的一个参数x

关键字参数

关键字(keyword)传递是根据每个参数的名字传递参数。关键字并不用遵守位置的对应关系。

def fun(a,b,c):
  return a+b+c

print(f(1,c=3,b=2))

默认参数

def ComputeFunc(x, n=1):
    return x * x

ComputeFunc(6)

默认参数可以简化函数的调用。

设置默认参数时,要注意:

  • 必选参数在前,默认参数在后,否则Python的解释器会报错

建议:

  • 当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

可变参数

在某些场景下,我们可能会不知道入参会有多少个,这个时候,可变参数就上场了,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

def func(*name):
    print(type(name))
    print(name)

func(1,4,6)
func(5,6,7,1,2,3)

当然还可以这样:

def func(*name):
    print(type(name))
    print(name)

name = [1, 4, 6]
func(*name)

可变关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而可变关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

def func(**dict):
    print(type(dict))
    print(dict)

func(a=2,b=1,c=11)

当然还可以这样:

def func(**dict):
    print(type(dict))
    print(dict)

d = {"a":2, "b":1, "c":11}
func(**d)

输出:
<class 'dict'>
{'c': 11, 'b': 1, 'a': 2}

参数组合

def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

f1(1, 2, 3, 'a', 'b', x=86)

输出:
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 86}

函数返回 return

return 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。

相关阅读