工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python 関数完全マスター: 構文・種類・実践例

Python 関数

この記事では、関数とは何か、構文、構成要素、関数の種類について学びます。また、Pythonで関数を作成する方法も習得します。

動画: Python関数入門

Pythonにおける関数とは?

Pythonにおいて、関数は特定のタスクを実行する関連文のグループです。

関数はプログラムをより小さくモジュール化されたチャンクに分割するのに役立ちます。プログラムが大きくなるほど、関数によって整理しやすく管理しやすくなります。

さらに、繰り返しを避け、コードを再利用可能にします。

関数の構文

def function_name(parameters):
    """docstring"""
    statement(s)

上記は関数定義で、以下の構成要素からなります。

  1. 関数ヘッダー開始を示すキーワードdef。
  2. 関数を一意に識別する関数名。Pythonの識別子命名ルールに従う。
  3. 関数に値を渡すためのパラメータ(引数)。省略可能。
  4. 関数ヘッダー終了を示すコロン(:)。
  5. 関数の役割を説明するオプションのドキュメント文字列(docstring)。
  6. 関数本体を構成する1つ以上の有効なPython文。同じインデントレベル(通常スペース4つ)必要。
  7. 関数から値を返すオプションのreturn文。

関数の例

def greet(name):
    """ This function greets to the person passed in as a parameter """
    print("Hello, " + name + ". Good morning!")

Pythonで関数を呼び出すには?

関数を定義したら、別の関数、プログラム、あるいはPythonプロンプトから呼び出せます。関数を呼び出すには、適切なパラメータで関数名を入力するだけです。

>>> greet('Paul')
Hello, Paul. Good morning!

関数定義を含むPythonプログラムで上記コードを実行して出力を確認してください。

def greet(name):
    """ This function greets to the person passed in as a parameter """
    print("Hello, " + name + ". Good morning!")
greet('Paul')

注意: Pythonでは、関数定義は関数呼び出しより前に存在する必要があります。そうでない場合エラーになります。例:

# 関数呼び出し
greet('Paul')
# 関数定義
def greet(name):
    """ This function greets to the person passed in as a parameter """
    print("Hello, " + name + ". Good morning!")
# Error: name 'greet' is not defined

ドキュメント文字列

関数ヘッダーの直後の文字列はドキュメント文字列(docstring)と呼ばれ、ドキュメンテーション文字列の略です。関数の役割を簡潔に説明するために使われます。

省略可能ですが、ドキュメント化は良いプログラミング習慣です。先週の夕食を覚えていられないなら、常にコードを文書化しましょう。

上記例では関数ヘッダー直下にdocstringがあります。複数行にわたる場合に備え、一般にトリプルクォートを使用。この文字列は関数の__doc__属性として利用可能です。

例:

以下をPythonシェルで実行して出力を確認:

>>> print(greet.__doc__)
This function greets to the person passed in as a parameter

docstringについて詳しくはPython Docstringsを参照。)


return文

return文は関数を終了し、呼び出し元に戻るために使用します。

returnの構文

return [expression_list]

この文は評価される式を含められ、その値が返されます。式がない場合や関数内にreturn文自体がない場合、関数はNoneオブジェクトを返します。

例:

>>> print(greet("May"))
Hello, May. Good morning!
None

ここではgreet()が直接名前を出力しreturn文を使わないため、Noneが返されます。


returnの例

def absolute_value(num):
    """This function returns the absolute value of the entered number"""
    if num >= 0:
        return num
    else:
        return -num
print(absolute_value(2))
print(absolute_value(-4))

出力

2
4

Pythonでの関数の仕組み

Python 関数完全マスター: 構文・種類・実践例

変数のスコープとライフタイム

変数のスコープは、プログラム内で変数が認識される部分です。関数内で定義されたパラメータと変数は外部から見えません。したがってローカルスコープを持ちます。

変数のライフタイムは、変数がメモリに存在し続ける期間。関数内変数のライフタイムは関数実行中のみ。

関数から戻ると破棄されます。したがって、関数は前回の呼び出しからの変数値を記憶しません。

関数内変数のスコープを示す例:

def my_func():
    x = 10
    print("Value inside function:",x)
x = 20
my_func()
print("Value outside function:",x)

出力

Value inside function: 10
Value outside function: 20

ここではxの初期値は20。関数my_func()内でxを10に変更しても、外部の値には影響しません。

これは関数内のx(関数ローカル)と外部のxが別物だから。同じ名前でも異なるスコープを持つ別変数です。

一方、関数外の変数は内部から見えます。グローバルスコープを持ちます。

これらの値は内部から読み取り可能ですが、変更(書き込み)はできません。関数外の変数値を変更するには、globalキーワードでグローバル変数として宣言する必要があります。


関数の種類

基本的に関数は以下の2種類に分類できます:

  1. 組み込み関数 - Pythonに組み込まれた関数。
  2. ユーザー定義関数 - ユーザー自身が定義した関数。

Python

  1. Stratasys FDM造形を最適化するInsight必須機能10選
  2. Python 演算子完全マスター: 包括的ガイド
  3. Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
  4. Python ラムダ関数: 無名関数の実践ガイド
  5. Python辞書完全ガイド:作成、操作、高度なテクニック
  6. Pythonジェネレータ:効率的イテレーションと高度なユースケース
  7. Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
  8. Pythonデコレータマスター:エキスパート技法で関数を拡張
  9. Python strip()メソッド完全ガイド:実践例付き
  10. Pythonラムダ関数をマスターする:実例とベストプラクティス
  11. Python round()関数を実例で徹底解説