1.语法
def    函数名 ([参数列表]) :
    '''文档字符串'''    #说明函数用处
    函数体/若干语句

def test_01(a,b):
    '''定义一个函数test_01,并求和'''
    print("{0},{1},{2}".format(a,b,(a+b)))

test_01(5,6)

5,6,11

    2.要点
1.Python 执行 def 时,会创建一个函数对象,并绑定到函数名变量上.
2.调用函数(通过参数命名实现调用)之前,必须要先定义函数,即先调用 def 创建函数对象
(1)内置函数对象会自动创建
(2)标准库和第三方库函数,通过 import 导入模块时,会执行模块中的 def 语句
 3.参数列表
(1)圆括号内是形式参数列表,有多个参数则使用逗号隔开
(2)形式参数不需要声明类型,也不需要指定函数返回值类型
(3)无参数,也必须保留空的圆括号
(4)实参列表必须与形参列表一一对应
4.形式参数是在定义函数时使用的。     形式参数的命名只要符合“标识符”命名规则即可。
在调用函数时, 传递的参数称为“ 实际参数” , 简称“ 实参”

5.return 返回值要点:
1.如果函数体中包含 return 语句,则结束函数执行并返回值;
2.如果函数体中不包含 return 语句,则返回 None 值。
要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可

def test_01(a,b):
    '''测试return'''
    return a+b
c = test_01(3,5)
print(c)

6.参数类型

1.位置参数:函数调用时,实参默认按位置顺序传递,需要个数和形参匹配。

def test_01(a,b):
    print(a+b)
c = test_01(3,5)
8

2.默认值参数:我们可以为某些参数设置默认值,这样这些参数在传递时就是可选的。称为“默认值参数”。 默认值参数放到位置参数后面。

def test_01(a,b,c=12,d=20):   #c,d参数的值固定
    print(a+b+c+d)
c = test_01(3,5)   #调动时不需要传c,d的参数
40

3.命名参数:我们也可以按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”
 

def test_01(a,b,c=12,d=20):
    print(a+b+c+d)
c = test_01(b=4,a=5)  #强制命名,可以不区分顺序
 41

4.可变参数指的是“可变数量的参数”。
分两种情况:
1.*param(一个星号),将多个参数收集到一个“元组”对象中。

def test_01(a,b,*c): 
    print(a,b,c)
c = test_01(1,2,3,4,5,6)

1 2 (3, 4, 5, 6)

2.**param(两个星号),将多个参数收集到一个“字典”对象中。

def test_01(a,b,**c):
    print(a,b,c)
c = test_01(1,2,name = "cora",age = 18)

1 2 {'name': 'cora', 'age': 18}