|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 hhzczy 于 2018-10-23 17:31 编辑
关于收集参数,我写了如下代码运行后有些疑问:
与“位置参数”和“收集参数”放置的位置相关。
——————————————
情况一:(正常无问题)
- def demo_tup(* demo_tup, extra='8):
- print('其它参数是:', extra)
- print('收集参数是:', demo_tup)
-
- demo_tup(1, 2, 3, 4, 5, extra='A')
复制代码
输出结果:
其它参数是: A
收集参数是: (1, 2, 3, 4, 5)
——————————————
情况二:报错(仅仅把红色调整了一下位置)。
问题1:是否位置参数一定要定义到收集参数之后呢???
def demo_tup(extra='8', * demo_tup):
print('其它参数是:', extra)
print('收集参数是:', demo_tup)
demo_tup(extra='A', 1, 2, 3, 4, 5)
输出结果:
File "C:\Users\hh\Desktop\test1.py", line 5
demo_tup(extra='A', 1, 2, 3, 4, 5)
^
SyntaxError: positional argument follows keyword argument
——————————————
情况三
问题2:为什么报错?
def demo_tup(extra='8', * demo_tup):
print('其它参数是:', extra)
print('收集参数是:', demo_tup)
demo_tup(1, 2, 3, 4, 5, extra='A')
报错:
Traceback (most recent call last):
File "C:\Users\hh\Desktop\test.py", line 5, in <module>
demo_tup(1, 2, 3, 4, 5, extra='A')
TypeError: demo_tup() got multiple values for argument 'extra'
——————————————
情况四:
def demo_tup(* demo_tup, extra):
print('其它参数是:', extra)
print('收集参数是:', demo_tup)
demo_tup(1, 2, 3, 4, 5, 'A')
报错:
Traceback (most recent call last):
File "C:\Users\hh\Desktop\test1.py", line 5, in <module>
demo_tup(1, 2, 3, 4, 5, 'A')
TypeError: demo_tup() missing 1 required keyword-only argument: 'extra'
——————————————
情况五:
def demo_tup(extra, * demo_tup):
print('其它参数是:', extra)
print('收集参数是:', demo_tup)
demo_tup('A', 1, 2, 3, 4, 5)
返回结果:
其它参数是: A
收集参数是: (1, 2, 3, 4, 5)
——————————————
四、五输出结果都无问题:
问题3:在使用自定义函数的时候,不给参数变量名为什么就正常了呢?为什么会自动把第一个参数或第四个参数给变量extra??
情况2,关键字要放后边
情况3,位置不对,1-5要送给extra
情况4,好像和1没啥区别,就是默认值不一样
问题2,你设置默认参数,要放后边
|
|