一、什么是函数

函数类似于一种工具,可以重复调用。

二、为什么要用函数

防止代码的冗余;代码的可读性差。

三、使用方法

3.1

1 定义函数----->make a wapen

2 调用函数----->use it

## 函数的命名规范和变量名一样,需要具有意义。

四、函数的三种分类

4.1 无参函数

def func(): #()没有参数
print('hello world')
func()

4.2 空函数

deffunc2():pass #代码块先用pass代替, 空函数
func2()

4.3 有参函数

def func1(a,b): #()有参数, 有参函数
print(a,b)
func1(1,2) #a= 1 b =2

4.4把函数名赋值给变量

deffunc3():print('小猪皮蛋')
f= func3 #通过把函数名赋值给变量f,调用f也能调用函数
f()

五、函数的返回值

5.1 不写return:返回none

defu():print(1)#u() # 1
print(u()) #None
5.2 只写return:只有结束代码的效果,返回none
defu():print(1)return
#u() # 1
print(u()) #None

5.3 写return none:与上一条一样效果

defu():print(1)returnNone#u() # 1
print(u()) #None

5.4 return 返回一个值:可以将返回的结果当做一个变量名使用

defs(a,b):returna,b
s(1,2) #看不见结果
d = s(1,2) #把函数的结果给变量d就可以看见结果
print(d) #(1, 2)

5.5 return 返回多个值: 5.5.1 将返回的多个值默认存入元祖返回

5.5.2 函数的返回不想被修改

5.5.3 可以自己指定返回的类型

deffunc1():return 1, "2"
print(func1()) #(1, '2') 返回元祖
a = 1b= 2c= '3'd= [4, 5]
e= {'name': 'sean'}deffunc(a, b, c, d, e):returna, b, c, d, eprint(func(a, b, c, d, e)) #(1, 2, '3', [4, 5], {'name': 'sean'}) #返回指定类型
## return 是函数结束的标志,函数体代码,只要执行return,函数就执行结束。

六、函数的参数

6.1 参数类型

形参: 函数在定义阶段就规定的参数,相当于定义变量时的变量名。

实参: 函数在调用阶段传入的参数,相当于定义变量时的变量值。

def foo(a): #a就是形参
print(a)
foo(1) #1就是实参

6.2 传参方式

6.2.1 位置参数: 通过位置进行传参。

defs(a,b):returna,bprint(s(1,2)) #(1, 2) a=1 b=2

6.2.2 关键字参数: 指定参数进行传参。

defs(a,b):returna,bprint(s(b=1,a=2)) #(2, 1) b=1,a=2

6.2.3 默认参数: 在定义函数阶段就已经传入参数,如果在实参时传入一个新参数,就会使用新参数。***不能将可变类型当参数传递。

def s(a,b,c=3):returna,b,c
s(1,2)print(s(1,2)) #(1, 2, 3)默认把c=3也传出来
def s(a,b,c=3):returna,b,c#s(1,2,c=4)
print(s(1,2,c=4)) #(1, 2, 4)指定c=4时,就把指定值传出来

6.2.4 可变长参数

6.2.4.1 *args : 接收所有溢出的位置参数,接收的值都被存入一个元祖。

示范:

faiss python 函数 的 python函数的方法_调用函数

faiss python 函数 的 python函数的方法_变量名_02

解决方法:

#*args
def f(a,b,*args): #接收溢出位置参数
print(a,b,args) #args 会把溢出的参数存入一个元祖
f(1,2,3,4,5) #1 2 (3, 4, 5)
def f(a,b,*args): #接收溢出位置参数
print(a,b,*args) #args 会把溢出的参数打散
f(1,2,3) #1 2 3

6.2.4.2 **kwargs : 接收所以溢出的关键字参数,接收的值都被存入一个字典。

示范:

faiss python 函数 的 python函数的方法_faiss python 函数 的_03

faiss python 函数 的 python函数的方法_变量名_04

解决方法:

#**kwargs
def f(a, b, **kwargs):print(a, b, kwargs) #kwargs: 会把溢出的参数以字典返回
f(1, 2, c=3) #1 2 {'c': 3}
def f(a, b, **kwargs): #接收溢出关键字参数
print(a, b, *kwargs) #*kwargs 会把溢出的参数以字典中的key返回
f(b=1, a=2, c=3) #2 1 c
## * 的作用: 打散你传入的容器类型