1 实参的类型
1.1 实参可以传递任意类型的对象
def fn1(a):
print('a =', a)
b = 123
fn(b)
def fn1(a):
print('a =', a)
b = True
fn(b)
def fn1(a):
print('a =', a)
b = 'abc'
fn(b)
1.2 调用函数的时候,解析器不会检查实参的类型
错误案例:
def fn2(a, b):
print(a + b)
fn2(1, '2')
报错内容:TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
错误原因:字符串和整数不能相加
1.3 在函数中重新给形参赋值,不会影响其他的变量
def fn3(a):
print('a =', a)
c = 10
fn3(c)
print('c =', c)
def fn3(a):
a = 20
print('a =', a)
c = 10
fn3(c)
print('c =', c)
2 不定长参数
2.1 题目:定义一个函数,求任意个数的和
以下两个案例为常见的错误
def s(a, b):
print(a + b)
s(1, 2, 3)
def s(a, b, c):
print(a + b + c)
s(1, 2)
错误原因:给定的实参数目与函数中形参的数目不一致
解决办法:引入不定长参数
- 不定长参数:在定义函数的时候,可以在形参前面加上一个*,此时该形参可以获取到所有的实参并将其放入一个元组中
- 例如引入*a ,该参数会接收所有位置实参,并且统一保存到一个元组当中,称为装包
def fn(*a):
print('a =', a, type(a))
fn(1,