|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
课程中介绍,如果在收集参数后再带另一个参数的话,要用关键字参数,不然会报错, 在实践这段过程时,碰到个问题
>>> def test(*pamas, unit='个'):
print ('参数个数=',len(pamas),unit)
>>> test(1,2,3,4,unit)
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
test(1,2,3,4,unit)
NameError: name 'unit' is not defined
===========================================================
已经在 定义函数时指定了unit, 然后 调用时,还说unit 为定义。 这是什么原理? 发现如果调用时,不加unit , 代码又能跑通
已经在 定义函数时指定了unit, 然后 调用时,还说unit 为定义。 这是什么原理? 发现如果调用时,不加unit , 代码又能跑通
定义函数时候,函数的 unit 是指在函数作用域的 unit,而你传入参数时候的 unit 是在全局作用域寻找 unit 变量的值
而你全局作用域没有定义 unit 所以导致你报错了,而且你定义参数时候设置了 unit = '个' 意思是设置函数的默认值为 个,当你不传入关键字参数时候 这个 unit 就等于 '个' 这个字符串
所以你直接这样调用即可:
- def test(*pamas, unit='个'):
- print('参数个数=', len(pamas), unit)
- test(1,2,3,4)
复制代码
|
|