0

関数定義があるとします。

def test():
    print 'hi'

引数を指定するたびにTypeErrorが発生します。

ここで、defステートメントを試してみたいと思います。どうすればよいですか?

4

6 に答える 6

5
try: 
    test()
except TypeError:
    print "error"
于 2009-01-13T09:13:25.053 に答える
1
In [1]: def test():
     ...:     print 'hi'
     ...:

In [2]: try:
     ...:     test(1)
     ...: except:
     ...:     print 'exception'
     ...:
exception

これがチュートリアルの関連セクションです

ところで。このエラーを修正するには、関数呼び出しをtry-exceptでラップしないでください。代わりに、適切な数の引数を使用して呼び出してください。

于 2009-01-13T09:21:27.770 に答える
1

あなたが言った

ここで、def ステートメントを試してみたいと思います。これを行う方法。

ステートメントは正しいです。def例外は発生していません。したがって、それを入れてtryも何も起こりません。

例外が発生するのは、関数への実際の呼び出しです。したがって、try代わりに次のように配置する必要があります。

try: 
    test()
except TypeError:
    print "error"
于 2009-01-13T10:42:30.693 に答える
1

呼び出し時にエラーをスローしたい場合は、次のアプローチを試すことができます。

def test(*args):
    if args:
        raise
    print 'hi'

これにより、エラーが呼び出し場所から関数にシフトされます。リストを介して任意の数のパラメーターを受け入れます*args。なぜあなたがそれをしたいのか私にはわかりません。

于 2009-01-13T21:20:28.877 に答える
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)
于 2009-01-13T21:21:03.620 に答える
0

これは有効です:

try:
  def test():
    print 'hi'
except:
  print 'error'


test()
于 2009-01-13T21:05:39.627 に答える