Python 入门系列 10

1 实参的类型

1.1 实参可以传递任意类型的对象

def fn1(a):
	print('a =', a)
b = 123
fn(b)		# a = 123
def fn1(a):
	print('a =', a)
b = True
fn(b)	
def fn1(a):
	print('a =', a)
b = 'abc'
fn(b)		# a = abc

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)		# a = 10
print('c =', c)		# c = 10
def fn3(a):
	a = 20
	print('a =', a)
c = 10
fn3(c)		# a = 20
# 解释说明:在执行fn3(c)这行代码时, 先将 c 的值赋给 a,即此时 a = 10,再执行 a = 20,所以 a的终值为20
print('c =', c)		# c = 10

2 不定长参数

2.1 题目:定义一个函数,求任意个数的和

以下两个案例为常见的错误
def s(a, b):
	print(a + b)
s(1, 2, 3)
# TypeError: s() takes 2 positional arguments but 3 were given
def s(a, b, c):
	print(a + b + c)
s(1, 2)
# TypeError: s() takes 2 positional arguments but 3 were given
错误原因:给定的实参数目与函数中形参的数目不一致
解决办法:引入不定长参数
  • 不定长参数:在定义函数的时候,可以在形参前面加上一个*,此时该形参可以获取到所有的实参并将其放入一个元组中
  • 例如引入*a ,该参数会接收所有位置实参,并且统一保存到一个元组当中,称为装包
def fn(*a):
	print('a =', a, type(a))
fn(1,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值