假设我有一个函数定义:
def test():
print 'hi'
每当我给出一个参数时,我都会得到一个TypeError。
现在,我想把def语句放在try中。我该怎么做?
答案 0 :(得分:5)
try:
test()
except TypeError:
print "error"
答案 1 :(得分:1)
In [1]: def test():
...: print 'hi'
...:
In [2]: try:
...: test(1)
...: except:
...: print 'exception'
...:
exception
以下是tutorial
中的相关部分 顺便说一下。要修复此错误,您不应该在try-except中包装函数调用。而是使用正确数量的参数调用它!答案 2 :(得分:1)
你说
现在,我想把def语句 在尝试。怎么做。
def
语句是正确的,它不会引发任何异常。因此将它放在try
中将不会做任何事情。
引发异常的是对函数的实际调用。所以应该放在try
而不是:
try:
test()
except TypeError:
print "error"
答案 3 :(得分:1)
如果你想在通话时抛出错误,听起来你可能想要,你可以试试这个方法:
def test(*args):
if args:
raise
print 'hi'
这会将错误从调用位置转移到函数。它通过*args
列表接受任意数量的参数。不是我知道你为什么要那样做。
答案 4 :(得分:1)
在Python中处理可变数量参数的更好方法如下:
def foo(*args, **kwargs):
# args will hold the positional arguments
print args
# kwargs will hold the named arguments
print kwargs
# Now, all of these work
foo(1)
foo(1,2)
foo(1,2,third=3)
答案 5 :(得分:0)
这是有效的:
try:
def test():
print 'hi'
except:
print 'error'
test()