2021.03.15
总结
位置参数和关键字参数
根据函数调用的时候实参的传递方式分类
重点:位置参数和关键字参数、参数默认值
一般:参数类型说明和带*的不定长
了解:**的不定长
1)位置参数 - 让实参和形参在位置上一一对应
2)关键字参数 - 调用的时候在实参前加’形参名='的结构
3)位置参数和关键字参数可以一起用:位置参数必须在关键字参数的前面
def func1(a, b, c):
print(f'a:{a}, b:{b}, c:{c}')
# 位置参数
func1(10, 20, 30) # a:10, b:20, c:30
func1(20, 10, 30) # a:20, b:10, c:30
# 关键参数
func1(a=100, b=200, c=300) # a:100, b:200, c:300
func1(b=200, c=300, a=100) # a:100, b:200, c:300
func1(100, c=300, b=200) # a:100, b:200, c:300
# func1(a=100, b=200, 300) # SyntaxError: positional argument follows keyword argument
# func1(100, a=200, c=300) # 传参必须保证每个参数都有值
参数默认值 - 形参
定义函数的时候可以直接给形参赋值,这样的参数就是有默认值的参数,
在调用有默认值参数的函数时候,有默认值的参数可以不用传参。
注意:如果有的参数有默认值,有的参数没有默认值,那么没有默认值的参数必须在有默认值参数的前面
def func2(a=1, b=2, c=3):
# a = 10
print(f'a:{a}, b:{b}, c:{c}')
func2(10, 20, 30)
func2(10, 20)
func2(10)
func2()
def func3(a, b, c=3):
print(f'a:{a}, b:{b}, c:{c}')
func3(100, 200)
func3(100, 200, 300)
def func4(a=10, b=20, c=30):
print(f'a:{a}, b:{b}, c:{c}')
func4(c=300)
# def func3(a=1, b, c): # SyntaxError: non-default argument follows default argument
# print(f'a:{a}, b:{b}, c:{c}')
参数类型说明
方法一:在没有默认值的形参后加:’:类型名’
方法二:形参默认值的类型就是对应的参数类型
def func4(a: list, b: int, c=''):
print(f'a:{a}, b:{b}, c:{c}')
不定长参数
1)带的不定长参数 - 在形参前加,那么形参就是一个不定长参数,可以同时接受多个实参
不定长参数本质就是元组,多应的多个实参是元组的元素
注意:
a. 不定长参数对应的形参调用的时候必须用位置参数赋值
2)带的不定长参数 - 在形参前加,那么形参就是一个不定长参数,可以同时接受多个实参
不定长参数本质就是字典
注意:必须关键字参数传参
定义一个函数求多个数的和: sum1
sum1(10, 20)、sum1(20, 78, 8), sum1(10, 9, 8, 7, 4)
def sum1(*nums):
s = 0
for x in nums:
s += x
print('和:', s)
sum1() # ()
sum1(1) # (1,)
sum1(10, 20) # (10, 20)
sum1<