どちらも適切です。後者の形式では、引数を例外に添付できます。
if len(sys.argv) == 1:
raise EmptyArgs('Specify at least 1 argument')
raise ステートメントのタプルとして、2 番目の値として引数を渡すこともできます。
if len(sys.argv) == 1:
raise EmptyArgs, ('Specify at least 1 argument',)
しかし、単一の非タプル値も機能し、単一の引数と見なされます:
if len(sys.argv) == 1:
raise EmptyArgs, 'Specify at least 1 argument'
raise
コード内の現在の場所に対して生成されるトレースバックの代わりに使用される別のトレースバックを指定するための3 番目の値:
if len(sys.argv) == 1:
raise EmptyArgs, ('Specify at least 1 argument',), traceback_object
ステートメントのドキュメントを参照してくださいraise
例外に引数を使用する場合、Python スタイルガイド PEP 8では、クラスではなく例外インスタンスを提供することを推奨しています。
例外を発生させるときraise ValueError('message')
は、古い形式の代わりに使用しraise ValueError, 'message'
ます。
例外引数が長い場合や文字列の書式設定が含まれる場合、括弧が含まれているため、行継続文字を使用する必要がないため、括弧を使用する形式が推奨されます。古い形式は Python 3 で削除されます。
Python 3 では、その形式はサポートされなくなります。