関数は、単一の関数または関連する関数を実装するために使用される、整理された再利用可能なコード セグメントです。
関数により、アプリケーションのモジュール性とコードの再利用が向上します。 Python には print() などの多くの組み込み関数が用意されていることはすでにご存知でしょう。ただし、ユーザー定義関数と呼ばれる独自の関数を作成することもできます。
1. 関数を定義します。
必要な関数を使用して関数を定義できます。
1. 関数コード ブロックは def キーワードで始まり、その後に関数識別子名と括弧 () が続きます。
2. 入力パラメータと独立変数は括弧で囲む必要があります。パラメータは括弧内で定義できます。
3. 関数ステートメントの最初の行では、関数の説明を保存するために使用されるドキュメント文字列をオプションで使用できます。
4. 関数の内容はコロンで始まり、インデントされます。
5.Return[expression] は関数を終了し、オプションで呼び出し元に値を返します。式を指定せずに返すことは、None を返すことと同じです。
構文
例
以下は、文字列を入力パラメータとして受け取り、それを標準の表示デバイスに出力する単純な Python 関数です。
2. 関数呼び出し
関数を定義するには、関数に名前を付け、関数に含まれるパラメーターとコード ブロック構造を指定するだけです。この関数の基本構造が完成したら、別の関数呼び出しを通じて、または Python プロンプトから直接実行できます。
次の例は printme() 関数を呼び出します:
#ユーザー定義関数を呼び出したい!
#同じ関数をもう一度呼び出したい
3. パラメータの値渡しとパラメータの参照渡し
Python のパラメータ (独立変数) はすべて参照渡しです。関数内のパラメータを変更すると、この関数を呼び出す関数内の元のパラメータも変更されます。例:
#関数内の値: [10, 20, 30, [1, 2, 3, 4]]
#関数外の値: [10, 20, 30, [1, 2] 、 3、 4] ]]
4. 関数パラメータ
Python 関数で使用できるパラメータの種類:
1. 必須パラメータ
2. 名前付きパラメータ
3. デフォルトパラメータ
4. 可変長パラメータ
1. 必要なパラメータ
必須パラメータは正しい順序で関数に渡す必要があります。コール時の数量は申告時の数量と同じである必要があります。
printme() 関数を呼び出すときは、パラメーターを渡す必要があります。そうしないと、構文エラーが発生します:
#Traceback (最新の呼び出しは最後):
# ファイル "test.py"、11 行目、
# printme();
#TypeError: printme() は正確に受け取ります引数 1 つ (0 が与えられます)
2. 名前付きパラメータ
名前付きパラメータは関数呼び出しと密接に関連しています。呼び出し元はパラメータの名前を使用して、渡されるパラメータの値を決定します。 Python インタープリターはパラメーター名とパラメーター値を照合できるため、渡されていないパラメーターをスキップしたり、パラメーターを順序どおりに渡すことができません。名前付きパラメータを使用して printme() 関数を呼び出します:
#My string
#Name: miki
#Age 50
3、缺省参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:
#Name: miki
#Age 50
#Name: miki
#Age 35
4、不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:
#输出:
#10
#输出:
#70
#60
#50
五、匿名函数
用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
Lambda函数能接收任何数量的参数但只能返回一个表达式的值,同时只能不能包含命令或多个表达式。
匿名函数不能直接调用print,因为lambda需要一个表达式。
lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法
lambda函数的语法只包含一个语句,如下:
#Value of total : 30
#Value of total : 40
六、关于return语句
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:
#Inside the function : 30
#Outside the function : 30
7. 変数のスコープ
プログラムのすべての変数にどこからでもアクセスできるわけではありません。アクセス許可は、変数が割り当てられている場所によって異なります。
変数のスコープによって、プログラムのどの部分に特定の変数名にアクセスできるかが決まります。最も基本的な 2 つの変数スコープは次のとおりです:
1. グローバル変数
2. ローカル変数
8. 変数とローカル変数
関数内で定義された変数はローカル スコープを持ち、関数の外で定義された変数はグローバル スコープを持ちます。
ローカル変数は宣言されている関数内でのみアクセスできますが、グローバル変数はプログラム全体からアクセスできます。関数が呼び出されると、関数内で宣言されたすべての変数名がスコープに追加されます。次の例:
#関数内ローカル合計 : 30
#関数外グローバル合計 : 0