Python Day 9 函数(函数的初识,函数的参数)
enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
可以自定义起始值
li = ['alex','银角','女神','egon','太白'] for i in enumerate(li): print(i) for index,name in enumerate(li,1): print(index,name) for index, name in enumerate(li, 100): # 起始位置默认是0,可更改 print(index, name) (0, 'alex') (1, '银角') (2, '女神') (3, 'egon') (4, '太白') 1 alex 2 银角 3 女神 4 egon 5 太白 100 alex 101 银角 102 女神 103 egon 104 太白
函数的初识
函数构成
def 关键字 空格 函数名(与变量设置相同): 英文的冒号
函数体
执行函数 :函数名+()
例:
def my_len(x): count = 0 for i in x: count += 1 return count l1 = [1, 2, 3, ['a','b'], {'name':'zhansan'},]
print(my_len(l1))
函数的返回值
return:
1,函数中遇到return 结束函数,下面代码不执行。
2,将函数里面的值返回给函数的执行者(调用者)。
第一种情况:
只有return,返回None
第二种情况:
return None
第三种情况:
return 单个值(返回的值与单个值的类型相同)
第四种情况:
return 多个值 以元组的形式返回给函数的调用者。
什么是None?
所有的空集合,空列表,空字典.... --->None
三元运算
def my_max(x,y): if x > y: return x else: return y =================== #三元运算 c = x if x > y else y # c x y print(c) #例 def my_max(x,y): return x if x > y else y
函数的参数
实参角度
位置参数
一一对应,实参形参数量相等
def my_max(x,y): #x ,y 形参,形式参数 return x if x > y else y print(my_max(10,11)) #10,11 实参,实际参数
关键字参数
一一对应,实参形参数量相等,实参顺序可变
def my_max(x,y): #x ,y 形参,形式参数 return x if x > y else y print(my_max(x=10,y=11)) #关键字传参,一一对应
混合参数 (位置参数,关键字参数)
关键字参数必须在位置参数后面
def my_max(x,y): #x ,y 形参,形式参数 return x if x > y else y print(my_max(10,y=11)) #混合传参,关键字参数必须在位置参数后面
形参角度
位置参数
一一对应,实参形参数量相等
def my_max(x,y): #x ,y 形参,形式参数 return x if x > y else y print(my_max(10,11)) #实参
默认参数
默认参数必须放在形参的位置参数后面
默认参数不传值则为默认值,传值则覆盖默认值。
def my_max(x,y=100): #x ,y 形参,形式参数 return x if x > y else y print(my_max(10,11)) #实参
print(my_max(10)) #实参
动态参数
用户传入到函数中的实参数量不定时,或者是为了以后拓展,
此时要用到动态参数*args,**kwargs(万能参数。)
*args接收的是所有的位置参数。
**kwargs接收的是所有的关键字参数。
1 def func1(*args, **kwargs): 2 print(args) 3 print(kwargs) 4 5 func1(1, 2, 3, 4) 6 func1(x=4, y=5, z=6) 7 func1(1, 2, 3, x=4, y=5, z=6)
位置参数,*args,默认参数, **kwargs def func2(a, b, *args, sex='男',age=20, **kwargs): print(a) print(b) print(args) print(sex) print(age) print(kwargs) func2(1, 2, 5, 6, 7, 8, 9, x=6, y=5, name='alex')
def func3(*args,**kwargs): # 函数的定义 *用意是聚合。 print(args) # (1,2,3,11,21,32) print(kwargs) tu2 = (11, 22, 33) func3(*l1, *tu1, *tu2) #在函数的执行时,*的用意是打散。 dic ={'name': 'alex'} dic1 ={'age': 1000} func3(*l1, **dic, **dic1) #在函数的执行时,**的用意是打散。