13,004
回編集
細 (文字列「</source>」を「</syntaxhighlight>」に置換) |
細 (文字列「<source lang="python">」を「<syntaxhighlight lang="python">」に置換) |
||
21行目: | 21行目: | ||
def文に続けて関数名を記述した後、丸括弧()を記述する。丸括弧()の中には引数の定義を入れる場合もある。<br> | def文に続けて関数名を記述した後、丸括弧()を記述する。丸括弧()の中には引数の定義を入れる場合もある。<br> | ||
文末にはコロンを記述する。また、関数のブロックはif文等と同様にインデントで字下げする。<br> | 文末にはコロンを記述する。また、関数のブロックはif文等と同様にインデントで字下げする。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def 関数名([引数の定義]): | def 関数名([引数の定義]): | ||
実行コード | 実行コード | ||
27行目: | 27行目: | ||
<br> | <br> | ||
以下の例では、Hello!と返すSayHello関数である。<br> | 以下の例では、Hello!と返すSayHello関数である。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def SayHello(): | def SayHello(): | ||
print("Hello!") | print("Hello!") | ||
38行目: | 38行目: | ||
<br> | <br> | ||
上記のSayHello関数を変更して、引数に名前を入れてHello! <名前>を返す関数を作成する。<br> | 上記のSayHello関数を変更して、引数に名前を入れてHello! <名前>を返す関数を作成する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def SayHello(name): | def SayHello(name): | ||
print("Hello!" + name) | print("Hello!" + name) | ||
50行目: | 50行目: | ||
===== 組み込み関数の使用 ===== | ===== 組み込み関数の使用 ===== | ||
組み込み関数を使用するには、関数名に丸括弧()を付けて呼び出す。<br> | 組み込み関数を使用するには、関数名に丸括弧()を付けて呼び出す。<br> | ||
< | <syntaxhighlight lang="python"> | ||
s = "Python" | s = "Python" | ||
print(len(s)) | print(len(s)) | ||
64行目: | 64行目: | ||
先頭から順に引数の位置を対応させて渡されるのが位置引数である。<br> | 先頭から順に引数の位置を対応させて渡されるのが位置引数である。<br> | ||
位置引数は、ここの引数の位置と意味を覚えておかないと正しく処理されないということに注意する。<br> | 位置引数は、ここの引数の位置と意味を覚えておかないと正しく処理されないということに注意する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def dinner_menu(food, drink, dessert): | def dinner_menu(food, drink, dessert): | ||
print("夕食は" + food + "を用意しています。") | print("夕食は" + food + "を用意しています。") | ||
83行目: | 83行目: | ||
<br> | <br> | ||
上記の例を、キーワード引数を使用して実行する。<br> | 上記の例を、キーワード引数を使用して実行する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def dinner_menu(food, drink, dessert): | def dinner_menu(food, drink, dessert): | ||
print("夕食は" + food + "を用意しています。") | print("夕食は" + food + "を用意しています。") | ||
100行目: | 100行目: | ||
以下の例のように、dinner_menu関数の先頭の引数がfoodなので、第1引数のfoodから記述している。<br> | 以下の例のように、dinner_menu関数の先頭の引数がfoodなので、第1引数のfoodから記述している。<br> | ||
残りの引数は、キーワード引数を使用すれば順番は入れ替わっていても問題ない。<br> | 残りの引数は、キーワード引数を使用すれば順番は入れ替わっていても問題ない。<br> | ||
< | <syntaxhighlight lang="python"> | ||
dinner_menu("定食", dessert="ゼリー", drink="お茶") | dinner_menu("定食", dessert="ゼリー", drink="お茶") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
109行目: | 109行目: | ||
<br> | <br> | ||
以下の例では、引数を指定せずに関数を呼び出して、デフォルト引数の値で実行している。<br> | 以下の例では、引数を指定せずに関数を呼び出して、デフォルト引数の値で実行している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def dinner_menu(food="定食", drink="お茶", dessert="ゼリー"): | def dinner_menu(food="定食", drink="お茶", dessert="ゼリー"): | ||
print("夕食は" + food + "を用意しています。") | print("夕食は" + food + "を用意しています。") | ||
124行目: | 124行目: | ||
<br> | <br> | ||
また、引数を指定して呼び出すと、次のように結果を変更することができる。<br> | また、引数を指定して呼び出すと、次のように結果を変更することができる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
dinner_menu("ハンバーグ", drink="赤ワイン", dessert="シャーベット") | dinner_menu("ハンバーグ", drink="赤ワイン", dessert="シャーベット") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
136行目: | 136行目: | ||
===== アスタリスク*で位置引数のタプル化 ===== | ===== アスタリスク*で位置引数のタプル化 ===== | ||
以下の関数が定義されているものとする。<br> | 以下の関数が定義されているものとする。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def dinner_menu(food, drink, dessert): | def dinner_menu(food, drink, dessert): | ||
print(food) | print(food) | ||
146行目: | 146行目: | ||
以下の例では、アスタリスク*を使用して*argsという引数で纏めている。(このargsは、Pythonで慣習的に指定されている)<br> | 以下の例では、アスタリスク*を使用して*argsという引数で纏めている。(このargsは、Pythonで慣習的に指定されている)<br> | ||
<nowiki>*args</nowiki>で引数が纏められて、それを変数argにfor文で順に取得して出力している。<br> | <nowiki>*args</nowiki>で引数が纏められて、それを変数argにfor文で順に取得して出力している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def dinner_menu(*args): | def dinner_menu(*args): | ||
for arg in args: | for arg in args: | ||
161行目: | 161行目: | ||
また、位置引数とタプルを使用して次のように記述することもできる。<br> | また、位置引数とタプルを使用して次のように記述することもできる。<br> | ||
以下の例では、関数の引数に位置引数と*argsを使用している。タプルtを作成して、関数を呼び出す時に*argsの位置にこのタプルを入れて実行している。<br> | 以下の例では、関数の引数に位置引数と*argsを使用している。タプルtを作成して、関数を呼び出す時に*argsの位置にこのタプルを入れて実行している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def dinner_menu(food, *args): | def dinner_menu(food, *args): | ||
print(food) | print(food) | ||
179行目: | 179行目: | ||
===== アスタリスク**でキーワード引数の辞書化 ===== | ===== アスタリスク**でキーワード引数の辞書化 ===== | ||
以下の関数が定義されているものとする。<br> | 以下の関数が定義されているものとする。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def food(breakfast="パン", lunch="牛丼", dinner="定食"): | def food(breakfast="パン", lunch="牛丼", dinner="定食"): | ||
print(breakfast, lunch, dinner) | print(breakfast, lunch, dinner) | ||
191行目: | 191行目: | ||
この関数の定義の3つのキーワード引数を辞書として1つに纏めて記述する。<br> | この関数の定義の3つのキーワード引数を辞書として1つに纏めて記述する。<br> | ||
以下の例では、引数をアスタリスク**とkwargsで纏めている。(このkwargsは、Pythonで慣習的に指定されている)<br> | 以下の例では、引数をアスタリスク**とkwargsで纏めている。(このkwargsは、Pythonで慣習的に指定されている)<br> | ||
< | <syntaxhighlight lang="python"> | ||
def food(**kwargs): | def food(**kwargs): | ||
print(kwargs) | print(kwargs) | ||
202行目: | 202行目: | ||
<br> | <br> | ||
これは、以下のように、items関数を使用してキーと値を取得する形で記述することもできる。<br> | これは、以下のように、items関数を使用してキーと値を取得する形で記述することもできる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def food(**kwargs): | def food(**kwargs): | ||
for k, v in kwargs.items(): | for k, v in kwargs.items(): | ||
216行目: | 216行目: | ||
<br> | <br> | ||
また、以下のように、辞書型変数dicを作成してfood関数の引数**kwargsに渡すこともできる。<br> | また、以下のように、辞書型変数dicを作成してfood関数の引数**kwargsに渡すこともできる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def food(**kwargs): | def food(**kwargs): | ||
for k, v in kwargs.items(): | for k, v in kwargs.items(): | ||
238行目: | 238行目: | ||
<br> | <br> | ||
注意点は、第2引数*argsと第3引数**kwargsの順番を間違えるとエラーになるので順番を間違えないようにすること。<br> | 注意点は、第2引数*argsと第3引数**kwargsの順番を間違えるとエラーになるので順番を間違えないようにすること。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def food(breakfast, *args, **kwargs): | def food(breakfast, *args, **kwargs): | ||
print(breakfast) | print(breakfast) | ||
257行目: | 257行目: | ||
これにより、Pythonは他の言語では難しいことが行うことができる。<br> | これにより、Pythonは他の言語では難しいことが行うことができる。<br> | ||
<br> | <br> | ||
< | <syntaxhighlight lang="python"> | ||
def hello(): | def hello(): | ||
print("Hello, Python") | print("Hello, Python") | ||
278行目: | 278行目: | ||
<br> | <br> | ||
外側の関数では、2つの引数を加算して、内側の関数では、2つの引数を加えて10倍して、それをprintで出力している。<br> | 外側の関数では、2つの引数を加算して、内側の関数では、2つの引数を加えて10倍して、それをprintで出力している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
def OuterFunc(a, b): | def OuterFunc(a, b): | ||
def InnerFunc(c, d): | def InnerFunc(c, d): |