为什么还是报错?
不是应该输出 error 吗?
def f(x,y=2,z=3):
pass
try:
f(x=1,2)
except:
print('error')
因为你现在时语法错误,也就是说解释器不知道你写了什么,无法执行,所以不会捕捉错误抛出错误,而是直接报错
测试了各种正确的调用方法,以及错误的
报SyntaxError:错的,程序不继续运行下去,所以try语句无效
报TypeError, ZeroDivisionError等错误的,try语句才有效
>>> f(x=1,y=2,z=3)
>>> f(1,y=2,z=3)
>>> f(1,2,z=3)
>>> f(1,2,3)
>>> f(x=1,2,3)
SyntaxError: positional argument follows keyword argument
>>> f(1,y=2,3)
SyntaxError: positional argument follows keyword argument
>>> f(x=1,y=2,3)
SyntaxError: positional argument follows keyword argument
>>> f(1,b=2)
Traceback (most recent call last):
File "<pyshell#61>", line 1, in <module>
f(1,b=2)
TypeError: f() got an unexpected keyword argument 'b'
>>> f(1/0)
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
f(1/0)
ZeroDivisionError: division by zero
>>> try:
f(x=1,b=2)
except:
print('error')
error
>>> try:
f(x=1/0)
except:
print('error')
error
位置参数放前面,关键字参数放后面,所以你写的(x=1,2)本身就有问题!过不了编译环节。