Pythonの無効な呼び出しパラメータエラーを解決するにはどうすればよいですか?

WBOY
リリース: 2023-06-24 22:44:10
オリジナル
3324 人が閲覧しました

Python は、科学技術コンピューティング、データ分析、自動化、Web 開発などの分野で広く使用されている高水準プログラミング言語です。 Python アプリケーション開発では、パラメータの不正な呼び出しによるエラーは一般的なプログラミング エラーであり、プログラムがクラッシュしたり、実行結果が期待と一致しなかったりする可能性があります。この記事では、Pythonでパラメータが不正に呼び出される原因とその解決方法を紹介します。

1. Python でパラメータを呼び出す方法

Python では、関数とメソッドを呼び出す 2 つの方法があります:

  1. 位置パラメータ呼び出しメソッド

位置パラメータは、定義された順序で渡されるパラメータを指します。たとえば、次の関数定義には 2 つの位置パラメータ a と b があります:

def add(a, b): return a + b
ログイン後にコピー

関数を呼び出すとき、位置パラメータの順序でパラメータを渡すことができます:

result = add(1, 2)
ログイン後にコピー

Here 1 およびパラメータ a と b にそれぞれ 2 が割り当てられている場合、関数は 3 を返します。

  1. キーワードパラメータ呼び出しメソッド

キーワードパラメータは、パラメータ名に従って渡されるパラメータです。たとえば、次の関数定義には 2 つのキーワード パラメータ x と y があります:

def sub(x, y): return x - y
ログイン後にコピー

関数を呼び出すとき、パラメータ名を指定してパラメータを渡すことができます:

result = sub(x=3, y=1)
ログイン後にコピー

ここで 3 と 1 は次のとおりです。それぞれパラメータ x と y に割り当てられると、関数は 2 を返します。

2. 不正な Python 呼び出しパラメータ エラーの原因

不正な Python 呼び出しパラメータ エラーには、通常次の理由があります:

  1. パラメータの数が一致しません

関数またはメソッドが呼び出され、渡されたパラメータの数が定義されたパラメータの数と一致しない場合、不正なパラメータ エラーが発生します。たとえば、次の関数定義には 2 つの位置パラメータ a と b がありますが、呼び出し時に渡されるパラメータは 1 つだけです。

def add(a, b): return a + b result = add(1)
ログイン後にコピー

ここではパラメータ 1 が 1 つだけ渡されますが、関数定義には 2 つの位置パラメータが必要なので、 will 不正なパラメータエラーが発生しました。

  1. 位置パラメータとキーワード パラメータの混在

位置パラメータとキーワード パラメータを混在させると、パラメータの不一致が発生する可能性があります。たとえば、次の関数定義には、2 つの位置パラメータ a および b と、キーワード パラメータ c があります。

def func(a, b, c=0): return a + b + c
ログイン後にコピー

関数を呼び出すとき、パラメータ名を指定することで、キーワード パラメータ c に値を渡すことができます。

result = func(1, 2, c=3)
ログイン後にコピー

位置パラメータを使用してパラメータ値を渡すこともできます:

result = func(1, 2, 3)
ログイン後にコピー

ただし、キーワード パラメータ c を使用して位置パラメータを渡すと、不正なパラメータ エラーが発生します:

result = func(1, 2, c=4, 5)
ログイン後にコピー

ここでは両方を使用します。キーワード パラメータと位置パラメータが省略されているため、パラメータの不一致が生じます。

  1. 不正な型パラメータの受け渡し

渡されたパラメータの型が、関数またはメソッドで定義されたパラメータの型と一致しない場合も、不正なパラメータ エラーが発生します。たとえば、次の関数定義には整数パラメータが必要です:

def func(num): return num * 2
ログイン後にコピー

ただし、文字列パラメータが渡されると、不正なパラメータ エラーが発生します:

result = func('hello')
ログイン後にコピー

ここで文字列型がパラメータに渡されましたが、関数は定義には整数型パラメータが必要です。

3. Python 呼び出しパラメータの不正エラーを解決する方法

不正な Python パラメータ エラーが発生した場合、一般的な解決策には次のようなものがあります:

  1. パラメータを確認する番号とタイプ

まず、関数またはメソッドの呼び出し時に渡されるパラメータの数とタイプが、関数またはメソッドで定義されたパラメータの数とタイプと一致しているかどうかを確認する必要があります。たとえば、次のコードは、関数の呼び出し時に渡されるパラメータの数が正しいかどうかをチェックします。

def func(a, b, c): pass args = (1, 2, 3) if len(args) != 3: print('参数数量不正确') else: func(*args)
ログイン後にコピー

ここでは、タプル引数を使用して渡されたパラメータを格納し、引数の長さが 3 に等しいかどうかをチェックします。そうでない場合は、パラメータの数が正しくないことを示すプロンプトが表示され、そうでない場合は func 関数が呼び出されます。

  1. キーワード パラメーターを使用する

キーワード パラメーターを使用すると、パラメーターの順序が正しくない問題を回避でき、コードの可読性も向上します。たとえば、次のコードでは、キーワード パラメータを使用して関数を呼び出します。

def func(a, b, c): pass params = {'a': 1, 'b': 2, 'c': 3} func(**params)
ログイン後にコピー

ここでは、関数の呼び出し時に渡されるパラメータを格納するために辞書の params が使用され、その後、パラメータを解凍するために **params が使用されます。 params に入れて関数に渡します。

  1. デフォルト値の設定

関数またはメソッドのパラメータにデフォルト値を設定すると、呼び出し時の柔軟性が高まります。たとえば、次の関数定義ではデフォルトのパラメータ値を設定します:

def func(a, b=0, c=0): pass
ログイン後にコピー

関数を呼び出すとき、パラメータ a を 1 つだけ渡すことも、b と c の両方を同時に渡すこともできます:

func(1) # 只传递a参数,b和c使用默认值0 func(1, 2, 3) # 传递a、b和c参数 func(a=1, c=3) # 使用关键字参数传递a和c参数,b使用默认值0
ログイン後にコピー

ここで b と c のデフォルト値は 0 です。パラメータが渡されない場合は、デフォルト値が使用されます。

  1. 例外のキャッチ

不正な Python パラメーター エラーが発生すると、プログラムがクラッシュしたり、エラー メッセージが出力されたりすることがあります。この状況を回避するために、プログラム内で例外をキャッチして処理できます。たとえば、次のコードでは、try-excel ステートメントを使用して、不正なパラメータを持つ例外をキャッチします。

def func(a, b): pass try: result = func(1) except TypeError: print('参数不合法')
ログイン後にコピー

func 関数を呼び出すときに渡されるパラメータは 1 つだけですが、関数定義には 2 つのパラメータが必要なので、パラメータ法的エラー。 Try-Except ステートメントを使用して、この例外をキャッチして処理し、プロンプト情報を出力します。

要約すると、Python の不正なパラメータ呼び出しエラーはプログラムの実行結果とパフォーマンスに影響を与える可能性がありますが、このエラーは適切な方法を使用することで回避できます。日常のプログラミングでは、関数またはメソッドのパラメーターの数、型、デフォルト値を注意深く確認し、パラメーターの受け渡し方法を混合して使用しないようにする必要があります。同時に、避けられない例外の場合は、try-Except ステートメントを使用してエラーをキャッチし、例外を処理する必要があります。

以上がPythonの無効な呼び出しパラメータエラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!