「Pythonの基礎 - 関数」の版間の差分

ナビゲーションに移動 検索に移動
文字列「<source lang="python">」を「<syntaxhighlight lang="python">」に置換
(文字列「</source>」を「</syntaxhighlight>」に置換)
(文字列「<source lang="python">」を「<syntaxhighlight lang="python">」に置換)
 
21行目: 21行目:
def文に続けて関数名を記述した後、丸括弧()を記述する。丸括弧()の中には引数の定義を入れる場合もある。<br>
def文に続けて関数名を記述した後、丸括弧()を記述する。丸括弧()の中には引数の定義を入れる場合もある。<br>
文末にはコロンを記述する。また、関数のブロックはif文等と同様にインデントで字下げする。<br>
文末にはコロンを記述する。また、関数のブロックはif文等と同様にインデントで字下げする。<br>
  <source lang="python">
  <syntaxhighlight lang="python">
  def 関数名([引数の定義]):
  def 関数名([引数の定義]):
     実行コード
     実行コード
27行目: 27行目:
<br>
<br>
以下の例では、Hello!と返すSayHello関数である。<br>
以下の例では、Hello!と返すSayHello関数である。<br>
  <source lang="python">
  <syntaxhighlight lang="python">
  def SayHello():
  def SayHello():
     print("Hello!")
     print("Hello!")
38行目: 38行目:
<br>
<br>
上記のSayHello関数を変更して、引数に名前を入れてHello! <名前>を返す関数を作成する。<br>
上記のSayHello関数を変更して、引数に名前を入れてHello! <名前>を返す関数を作成する。<br>
  <source lang="python">
  <syntaxhighlight lang="python">
  def SayHello(name):
  def SayHello(name):
     print("Hello!" + name)
     print("Hello!" + name)
50行目: 50行目:
===== 組み込み関数の使用 =====
===== 組み込み関数の使用 =====
組み込み関数を使用するには、関数名に丸括弧()を付けて呼び出す。<br>
組み込み関数を使用するには、関数名に丸括弧()を付けて呼び出す。<br>
  <source lang="python">
  <syntaxhighlight lang="python">
  s = "Python"
  s = "Python"
  print(len(s))
  print(len(s))
64行目: 64行目:
先頭から順に引数の位置を対応させて渡されるのが位置引数である。<br>
先頭から順に引数の位置を対応させて渡されるのが位置引数である。<br>
位置引数は、ここの引数の位置と意味を覚えておかないと正しく処理されないということに注意する。<br>
位置引数は、ここの引数の位置と意味を覚えておかないと正しく処理されないということに注意する。<br>
  <source lang="python">
  <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>
  <source lang="python">
  <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>
  <source lang="python">
  <syntaxhighlight lang="python">
  dinner_menu("定食", dessert="ゼリー", drink="お茶")
  dinner_menu("定食", dessert="ゼリー", drink="お茶")
  </syntaxhighlight>
  </syntaxhighlight>
109行目: 109行目:
<br>
<br>
以下の例では、引数を指定せずに関数を呼び出して、デフォルト引数の値で実行している。<br>
以下の例では、引数を指定せずに関数を呼び出して、デフォルト引数の値で実行している。<br>
  <source lang="python">
  <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>
  <source lang="python">
  <syntaxhighlight lang="python">
  dinner_menu("ハンバーグ", drink="赤ワイン", dessert="シャーベット")
  dinner_menu("ハンバーグ", drink="赤ワイン", dessert="シャーベット")
  </syntaxhighlight>
  </syntaxhighlight>
136行目: 136行目:
===== アスタリスク*で位置引数のタプル化 =====
===== アスタリスク*で位置引数のタプル化 =====
以下の関数が定義されているものとする。<br>
以下の関数が定義されているものとする。<br>
  <source lang="python">
  <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>
  <source lang="python">
  <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>
  <source lang="python">
  <syntaxhighlight lang="python">
  def dinner_menu(food, *args):
  def dinner_menu(food, *args):
     print(food)
     print(food)
179行目: 179行目:
===== アスタリスク**でキーワード引数の辞書化 =====
===== アスタリスク**でキーワード引数の辞書化 =====
以下の関数が定義されているものとする。<br>
以下の関数が定義されているものとする。<br>
  <source lang="python">
  <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>
  <source lang="python">
  <syntaxhighlight lang="python">
  def food(**kwargs):
  def food(**kwargs):
     print(kwargs)
     print(kwargs)
202行目: 202行目:
<br>
<br>
これは、以下のように、items関数を使用してキーと値を取得する形で記述することもできる。<br>
これは、以下のように、items関数を使用してキーと値を取得する形で記述することもできる。<br>
  <source lang="python">
  <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>
  <source lang="python">
  <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>
  <source lang="python">
  <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>
  <source lang="python">
  <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>
  <source lang="python">
  <syntaxhighlight lang="python">
  def OuterFunc(a, b):
  def OuterFunc(a, b):
     def InnerFunc(c, d):
     def InnerFunc(c, d):

案内メニュー