python语法之函数
一、什么是函数
函数类似于一种工具,可以重复调用。
二、为什么要用函数
防止代码的冗余;代码的可读性差。
三、使用方法
3.1
1 定义函数----->make a wapen
2 调用函数----->use it
## 函数的命名规范和变量名一样,需要具有意义。
四、函数的三种分类
4.1 无参函数
def func(): # ()没有参数 print('hello world') func()
4.2 空函数
def func2(): pass #代码块先用pass代替, 空函数 func2()
4.3 有参函数
def func1(a,b): # ()有参数, 有参函数 print(a,b) func1(1,2) # a= 1 b =2
4.4把函数名赋值给变量
def func3(): print('小猪皮蛋') f = func3 #通过把函数名赋值给变量f,调用f也能调用函数 f()
五、函数的返回值
5.1 不写return:返回none
def u(): print(1) # u() # 1 print(u()) #none
5.2 只写return:只有结束代码的效果,返回none
def u(): print(1) return # u() # 1 print(u()) #none
5.3 写return none:与上一条一样效果
def u(): print(1) return none # u() # 1 print(u()) #none
5.4 return 返回一个值:可以将返回的结果当做一个变量名使用
def s(a,b): return a,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 可以自己指定返回的类型
def func1(): return 1, "2" print(func1()) #(1, '2') 返回元祖
a = 1 b = 2 c = '3' d = [4, 5] e = {'name': 'sean'} def func(a, b, c, d, e): return a, b, c, d, e print(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 位置参数: 通过位置进行传参。
def s(a,b): return a,b print(s(1,2)) #(1, 2) a=1 b=2
6.2.2 关键字参数: 指定参数进行传参。
def s(a,b): return a,b print(s(b=1,a=2)) #(2, 1) b=1,a=2
6.2.3 默认参数: 在定义函数阶段就已经传入参数,如果在实参时传入一个新参数,就会使用新参数。***不能将可变类型当参数传递。
def s(a,b,c=3): return a,b,c s(1,2) print(s(1,2)) #(1, 2, 3)默认把c=3也传出来
def s(a,b,c=3): return a,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 : 接收所有溢出的位置参数,接收的值都被存入一个元祖。
示范:
解决方法:
# *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 : 接收所以溢出的关键字参数,接收的值都被存入一个字典。
示范:
解决方法:
# **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
## * 的作用: 打散你传入的容器类型
下一篇: JAVA设计模式---单例模式篇