Python チュートリアル - 関数

Jan 06, 2025 pm 01:52 PM

導入

この関数は、コードの重複を減らし、複雑なタスクを整理することを目的とした命令を含む呼び出し可能なユニットです。 void 関数 (戻り値なし) と値を返す関数の 2 種類があります。

これは Python の関数の基本構造です。

def function_name(args):
    function body
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これは、Python の void 関数 (戻り値なし) の例です。

# create a function
def hello():
    print("hello!")

# call the function
hello()
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

hello!
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードに基づいて、hello() という関数が作成されます。関数名に続けて括弧 () を指定することで関数を呼び出します。

これは戻り値を使用した関数の例です。

# create a function with return value
def add(a,b):
    return a + b

result = add(2,4)

print(result)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

6
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードに基づいて、2 つの数値を合計する add() という関数が作成されます。 add() 関数の戻り値は、結果変数内に格納されます。

戻り値関数を使用する場合は、戻り値が使用されていることを確認してください。

引数とキーワード引数

Python の関数は複数の引数を動的に受け取ることができます。関数に複数の引数を実装するには、2 つの方法があります。

  • 引数: 複数の引数は、キーワードを指定せずに関数に実装されます。引数は *args.

  • を使用して実装できます。
  • キーワード引数: 複数の引数は、指定されたキーワードを使用して関数に実装されます。キーワード引数は **kwargs.

  • を使用して実装できます。

引数とキーワード引数は両方とも、関数内の引数定義の最後の位置に配置する必要があります。

これは、数値の合計を動的に計算する引数アプローチを使用した複数の引数の実装の例です。

def sum(*args):
    result = 0
    for arg in args:
        result += arg
    return result

print(sum(1,2))
print(sum(1,2,3))
print(sum(1,2,3,4,5,4,3,2))
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

3
6
24
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードに基づいて、異なる数のパラメータを指定して sum() 関数を呼び出すことができます。

これは、キーワード引数アプローチを使用した複数の引数の実装の例です。

def display_info(name,**kwargs):
    print("========")
    print(f"name: {name}")
    print("other informations")
    for k, val in kwargs.items():
        print(f"{k}: {val}")
    print("========")

display_info("john",job="programmer",company="acme inc")
display_info("doe",job="programmer",company="acme inc",skills="go,java,php")
ログイン後にコピー
ログイン後にコピー

出力

========
name: john
other informations
job: programmer
company: acme inc
========
========
name: doe
other informations
job: programmer
company: acme inc
skills: go,java,php
========
ログイン後にコピー
ログイン後にコピー

上記のコードに基づいて、display_info() 関数を異なる数のパラメータで呼び出すことができます。 **kwargs を使用すると、パラメータをキーワードで定義できます。

引数とキーワード引数は両方とも一緒に使用できます。これは一例です。

def display(*args,**kwargs):
    print("===========")
    print("items")
    for arg in args:
        print(arg)
    print("other information")
    for k, val in kwargs.items():
        print(f"{k}: {val}")
    print("===========")

display("apple","coffee","milk",payment="cash")
display("TV","Camera",payment="cash",delivery="express")
ログイン後にコピー
ログイン後にコピー

出力

===========
items
apple
coffee
milk
other information
payment: cash
===========
===========
items
TV
Camera
other information
payment: cash
delivery: express
===========
ログイン後にコピー
ログイン後にコピー

再帰関数

再帰関数は、タスクを完了するときに自分自身を呼び出す関数です。再帰関数は、階乗数、フィボナッチ数列などを含む多くの問題を解決できます。

再帰関数には 2 つの主要なコンポーネントがあります:

  • 基本ケース: 基本ケースは、関数がいつ停止されるかを定義します。
  • 再帰関係: 再帰関係は関数の再帰プロセスを定義します。

この例では、階乗計算は再帰関数を使用して実装されています。

def function_name(args):
    function body
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

# create a function
def hello():
    print("hello!")

# call the function
hello()
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

factorial() 関数を詳しく見てみましょう。この関数には 2 つのコンポーネントが関係しています:

  • 基本ケース: n の値が 0 または 1 に等しい場合、関数の実行は終了します。

  • 再帰関係: n の値が 1 より大きい場合に関数が実行されます。

hello!
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

factorial() 関数を下の図に示します。

Python Tutorial - unction

ラムダ

ラムダは匿名関数です。ラムダには、一般的な関数と同様に、多くの引数を含めることができます。ラムダ関数は、値を直接返す小さな関数の作成に適しています。

これは sum() 関数の例です。

# create a function with return value
def add(a,b):
    return a + b

result = add(2,4)

print(result)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これは、2 つの数値を合計するラムダ関数の例です。ラムダ関数は、sum_func.
という変数内に保存されます。

6
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ラムダ関数を使用するには、変数名で関数を呼び出します。

def sum(*args):
    result = 0
    for arg in args:
        result += arg
    return result

print(sum(1,2))
print(sum(1,2,3))
print(sum(1,2,3,4,5,4,3,2))
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マップとフィルター

マップ機能

map() 関数は、リスト内の各項目に対して提供されたコールバック関数を実行します。

これは、各数値を 3 で乗算する map() 関数の例です。

3
6
24
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

出力

def display_info(name,**kwargs):
    print("========")
    print(f"name: {name}")
    print("other informations")
    for k, val in kwargs.items():
        print(f"{k}: {val}")
    print("========")

display_info("john",job="programmer",company="acme inc")
display_info("doe",job="programmer",company="acme inc",skills="go,java,php")
ログイン後にコピー
ログイン後にコピー

上記のコードに基づくと、triple() 関数は、map() 関数のコールバックとして機能します。つまり、数値リスト内の項目ごとに Triple() 関数が呼び出されます。次に、map() 関数の結果がリストに変換され、result という変数内に格納されます。

上記の例は、ラムダ関数を使用して簡略化できます。

========
name: john
other informations
job: programmer
company: acme inc
========
========
name: doe
other informations
job: programmer
company: acme inc
skills: go,java,php
========
ログイン後にコピー
ログイン後にコピー

出力

def display(*args,**kwargs):
    print("===========")
    print("items")
    for arg in args:
        print(arg)
    print("other information")
    for k, val in kwargs.items():
        print(f"{k}: {val}")
    print("===========")

display("apple","coffee","milk",payment="cash")
display("TV","Camera",payment="cash",delivery="express")
ログイン後にコピー
ログイン後にコピー

フィルター機能

filter() 関数は、指定されたコールバック関数に基づいてリスト内の項目を選択します。 filter() 関数は、提供されたコールバック関数を使用してリスト内の項目をフィルター処理するのに適しています。 filter() 関数には、ブール値を返すコールバック関数が必要です。

これは、リスト内の偶数のみを選択する filter() 関数の例です。

===========
items
apple
coffee
milk
other information
payment: cash
===========
===========
items
TV
Camera
other information
payment: cash
delivery: express
===========
ログイン後にコピー
ログイン後にコピー

出力

def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n-1)

# call the function
result = factorial(5)

print(result)
ログイン後にコピー

上記のコードに基づいて、filter() 関数は is_even() をコールバック関数として使用して、リストから偶数を選択します。

この例は、ラムダ関数を使用して簡略化できます。

120
ログイン後にコピー

出力

def function_name(args):
    function body
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

例 - 重複したコードを削除する

この機能は重複したコードを削除するために使用できます。たとえば、register() と login() という 2 つの関数があります。どちらの関数も検証プロセスを使用しています。

# create a function
def hello():
    print("hello!")

# call the function
hello()
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

検証プロセスに重複したコードがあります。これらの重複を削除するには、検証プロセスを別の関数でラップします。

hello!
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

validate() 関数は、register() 関数とlogin() 関数内で使用できます。

# create a function with return value
def add(a,b):
    return a + b

result = add(2,4)

print(result)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードに基づくと、追加の検証ルールが更新された場合に、検証ルールを 1 か所 (validate() 関数内) で更新できるため、コードはよりクリーンで変更が容易になります。

ヒント

これらは、Python で関数を操作する際の重要なヒントです。

  • 関数は単一のタスクを完了する必要があります。複数のタスクが必要な場合は、他のタスク用に別の関数を作成します。

  • 関数の引数の最大数は 3 です。引数が 3 つを超えると思われる場合は、関数の引数に専用のデータ オブジェクトを使用することを検討してください。

関数の引数の最大数については議論の余地があるようです。

これは、引数を使用した create_account() 関数の例です。

6
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

create_account() 関数は、よりクリーンなコードのためにデータ オブジェクトを使用するように変更できます。

def sum(*args):
    result = 0
    for arg in args:
        result += arg
    return result

print(sum(1,2))
print(sum(1,2,3))
print(sum(1,2,3,4,5,4,3,2))
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • ドキュメントを使用して関数の説明を説明します。ドキュメントは「"」構文を使用して追加できます。

これは関数内でドキュメントを使用する例です。

3
6
24
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

情報源

  • 関数の引数とキーワード引数
  • 再帰関数の図

この記事が Python の学習に役立つことを願っています。ご意見がございましたら、コメント欄にご記入ください。

以上がPython チュートリアル - 関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Apr 02, 2025 am 07:03 AM

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。

See all articles