函数三

一、函数

作用: 封装一段功能

函数定义关键字: def

1. 不定长参数

概述: 传入参数个数不固定

(1) 不确定参数名,以元组形式去接收

如: def print(self, *args, sep=’ ‘, end=’\n’, file=None)

def func(*args):
   print(args)
func(1,2,3,4,5,6,7,8,9,10)
输出结果: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
def func(a,b,*args):
   print(a)
   print(b)
   print(args)
   print("*"*50)
   multi = a * b
   for i in args:
       multi *= i
   return multi

result = func(1,2,4,5,6)
print(result)
结果:
    1
	 2
	(4, 5, 6)
	**************************************************
   240   

2. 关键字参数

概述:不确定参数接收,必须是【关键字+值】, 形态是字典

# 关键字参数定义
def func(**kwargs):
   # 打印关键字参数
   print(kwargs)
   # 循环遍历每一个关键字参数
   for key in kwargs:
       print(key,kwargs[key])

func(x=1,y=2,z=3)

3. *和**一起作为形参

#*args和**kwargs在一起的时候,*args 排在 **kwargs前边
def func(*args,**kwargs):
   print(args,kwargs)

func(1,2,3,4,5,username="lm",pwd="888888")

4. 实参为*args的情况

def func(a,b,c,d):
   print(a,b,c,d)
l = [1,2,3,4]
func(*l)

5. 实参为**kwargs的情况

def func(**dict):
   print(dict)
d = {"um":"modeng","pwd":"$12_12$"}
func(**d)

二、参数分为可变类型和不可变类型

不可以变类型: 整型,字符串,元组;不会影响参数本身

def cInt(a):
   a = 10
# b是一个整型
b = 2
cInt(b)
print(b)

可变数据类型: 列表,字典,集合;会影响到参数本身

def changeList(l):
   l.append([1,2,3,4,5])
   print("函数内的列表:",l)

l = [15,25,35]
changeList(l)
print("函数外的列表:",l)

三、匿名函数

关键字: lambda

注 意:

​ 1. lambda 只是一个表达式,函数体比def简单的多

​ 2. 封装的逻辑有

实例

1. 普通定义
add = lambda a,b:a+b
print(add(6,10))
2. 直接调用
(lambda a,b:a+b)(10,10)
3. 带有默认值参数
a = lambda a=20,b=30:a+b
4. 没有参数
a = 2
b = 3
c = lambda:a+b  #小小注意,参数名不能和函数名重叠

四、递归函数

注意:
   自己调用自己,注意调用自己深度,过多,计算机资源承载不了
   满足终止条件
   
   def fact(n):
   if n == 1:
       return 1
   return n*fact(n-1)

print(fact(3))
上一篇:PHP 字符串编码的转换


下一篇:发布-订阅模式