Python基础之函数参数
一、实参
1、实参分类:
2、实参基础代码:
def fun01(a, b, c): print(a) print(b) print(c) # 位置传参:实参与形参的位置依次对应 fun01(1, 2, 3) # 序列传参:用*将序列拆分后与形参的位置依次对应 fun01(*[4, 5, 6]) # 关键字传参:实参根据形参的名称进行对应 fun01(b=2, a=1, c=3) # 字典传参:用**将字典拆分后与形参的名字进行对应. fun01(**{"b":20,"c":"cc","a":1.5}) # 默认参数 def fun02(a = 0, b = 0, c = 0): print(a) print(b) print(c) # 不写参数,使用默认值. fun02() fun02(1) fun02(*[2,3]) # 关键字传参 与 默认传参相结合,可以让调用者只传递自己需要的信息. fun02(b = 20) fun02(**{"c":"cc"})
3、示例练习:定义函数,根据天/小时/分钟,计算总秒数
def get_total_second(day=0, hour=0, minute=0): return day * 24 * 60 * 60 + hour * 60 * 60 + minute * 60 s01 = get_total_second(1, 1, 1) s02 = get_total_second(1, 1) s02 = get_total_second(hour=2)
二、形参:
1、形参分类:
2、形参基础代码:
# 默认参数 def fun02(a = 0, b = 0, c = 0): print(a) print(b) print(c) # 不写参数,使用默认值. fun02() fun02(1) fun02(*[2,3]) # 关键字传参 与 默认传参相结合,可以让调用者只传递自己需要的信息. fun02(b = 20) fun02(**{"c":"cc"}) # 位置形参 def fun01(a, b, c): pass # 星号元组形参 def fun02(*args): # 对于方法内部而言,就是元组 # 对于调用者而言,可以传递数量无限的位置实参. print(args) # fun02() # fun02(1) # fun02(1,2,3,4) # 命名关键字形参:强制实参使用关键字传递. # a,b 是命名关键字形参 def fun03(*, a, b): print(a) print(b) # b 是命名关键字形参 def fun04(*args, b): print(args) print(b) # fun03(a = 1,b = 2) fun04(3, 44, 3, b =22) # 双星号字典形参 def fun05(**kwargs): # 对于方法内部而言,就是字典, # 对于调用者而言,可以传递数量无限的关键字实参. print(kwargs) fun05(a=1, b=2) # 调用 def fun06(*args, **kwargs): print(args) print(kwargs) # 数量无限的位置实参,数量无限的关键字实参 fun06(1, 2, 3, 4, 5, a="a", b=1.5) def fun07(a, b, *args, c, d, **kwargs): print(a) print(b) print(args) print(c) print(d) print(kwargs) fun07(1, 2, 3, 4, 5, d="d", c="c") fun07(1, 2, 3, 4, 5, d="d", c="c", e="ee") fun07(1, 2, d="d", c="c") print(1,2,3,4,5) # 1 2 3 4 5 print(1,2,3,4,5,"#") # 1#2#3#4#5
3、示例练习:定义函数,整数相加的函数。
def add(*args): sum = 0 for item in args: sum += item return sum re = add(1,2,3,4,45,43) print(re)
4、自定义列表的排序函数
def sort(list_target): # 传入的是可变类型 # 修改的是传入的对象 for r in range(len(list_target) - 1): for c in range(r+1,len(list_target)): if list_target[r] < list_target[c]: list_target[r],list_target[c] = list_target[c], list_target[r] list01 = [2,4,4,5,6,7] sort(list01) print(list01)
5、英文单词反转,如: how are you -->you are how
def get_words_inversion(words): list_words = words.split(' ') list_words.reverse() str_result = ' '.join(list_words) return str_result words = 'how are you' words = get_words_inversion(words) print(words)