📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == 関数は、よく使用する処理を手軽に実行することができるものである。<br> <br> 関数を呼び出すには、数値や文字列な…」
 
文字列「<source lang="python">」を「<syntaxhighlight lang="python">」に置換
 
(同じ利用者による、間の7版が非表示)
21行目: 21行目:
def文に続けて関数名を記述した後、丸括弧()を記述する。丸括弧()の中には引数の定義を入れる場合もある。<br>
def文に続けて関数名を記述した後、丸括弧()を記述する。丸括弧()の中には引数の定義を入れる場合もある。<br>
文末にはコロンを記述する。また、関数のブロックはif文等と同様にインデントで字下げする。<br>
文末にはコロンを記述する。また、関数のブロックはif文等と同様にインデントで字下げする。<br>
  <source lang="python">
  <syntaxhighlight lang="python">
  def 関数名([引数の定義]):
  def 関数名([引数の定義]):
     実行コード
     実行コード
  </source>
  </syntaxhighlight>
<br>
<br>
以下の例では、Hello!と返すSayHello関数である。<br>
以下の例では、Hello!と返すSayHello関数である。<br>
  <source lang="python">
  <syntaxhighlight lang="python">
  def SayHello():
  def SayHello():
     print("Hello!")
     print("Hello!")
35行目: 35行目:
  # 出力
  # 出力
  Hello!
  Hello!
  </source>
  </syntaxhighlight>
<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)
46行目: 46行目:
  # 出力
  # 出力
  Hello! Python
  Hello! Python
  </source>
  </syntaxhighlight>
<br>
<br>
===== 組み込み関数の使用 =====
===== 組み込み関数の使用 =====
組み込み関数を使用するには、関数名に丸括弧()を付けて呼び出す。<br>
組み込み関数を使用するには、関数名に丸括弧()を付けて呼び出す。<br>
  <source lang="python">
  <syntaxhighlight lang="python">
  s = "Python"
  s = "Python"
  print(len(s))
  print(len(s))
56行目: 56行目:
  # 出力
  # 出力
  6
  6
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


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 + "を用意しています。")
76行目: 76行目:
  飲み物は お茶 をおすすめします。
  飲み物は お茶 をおすすめします。
  デザートに ゼリー をどうぞ
  デザートに ゼリー をどうぞ
  </source>
  </syntaxhighlight>
<br>
<br>
===== キーワード引数 =====
===== キーワード引数 =====
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 + "を用意しています。")
95行目: 95行目:
  飲み物は お茶 をおすすめします。
  飲み物は お茶 をおすすめします。
  デザートに ゼリー をどうぞ
  デザートに ゼリー をどうぞ
  </source>
  </syntaxhighlight>
<br>
<br>
また、位置引数とキーワード引数は、混在させて関数を呼び出すことができるが、位置引数を先に記述する必要がある。<br>
また、位置引数とキーワード引数は、混在させて関数を呼び出すことができるが、位置引数を先に記述する必要がある。<br>
以下の例のように、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="お茶")
  </source>
  </syntaxhighlight>
<br>
<br>
===== デフォルト引数 =====
===== デフォルト引数 =====
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 + "を用意しています。")
121行目: 121行目:
  飲み物は お茶 をおすすめします。
  飲み物は お茶 をおすすめします。
  デザートに ゼリー をどうぞ
  デザートに ゼリー をどうぞ
  </source>
  </syntaxhighlight>
<br>
<br>
また、引数を指定して呼び出すと、次のように結果を変更することができる。<br>
また、引数を指定して呼び出すと、次のように結果を変更することができる。<br>
  <source lang="python">
  <syntaxhighlight lang="python">
  dinner_menu("ハンバーグ", drink="赤ワイン", dessert="シャーベット")
  dinner_menu("ハンバーグ", drink="赤ワイン", dessert="シャーベット")
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


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)
     print(drink)
     print(drink)
     print(dessert)
     print(dessert)
  </source>
  </syntaxhighlight>
<br>
<br>
上記の関数の3つの引数をタプル化して1つに纏めて記述する。<br>
上記の関数の3つの引数をタプル化して1つに纏めて記述する。<br>
以下の例では、アスタリスク*を使用して*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:
         print(arg)
         print(arg)
  </source>
dinner_menu("定食", "お茶", "ゼリー")
# 出力
定食
お茶
ゼリー
  </syntaxhighlight>
<br>
<br>
また、位置引数とタプルを使用して次のように記述することもできる。<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)
162行目: 169行目:
  t = ("お茶", "ゼリー")
  t = ("お茶", "ゼリー")
  dinner_menu("定食", *t)
  dinner_menu("定食", *t)
  </source>
# 出力
定食
お茶
ゼリー
  </syntaxhighlight>
<br>
<br>
===== アスタリスク**でキーワード引数の辞書化 =====
===== アスタリスク**でキーワード引数の辞書化 =====
以下の関数が定義されているものとする。<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)
174行目: 187行目:
  # 出力
  # 出力
  パン チャーハン ハンバーグ
  パン チャーハン ハンバーグ
  </source>
  </syntaxhighlight>
<br>
<br>
この関数の定義の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)
186行目: 199行目:
  # 出力
  # 出力
  {'breakfast' : 'パン', 'lunch' : 'チャーハン', 'dinner' : 'ハンバーグ'}
  {'breakfast' : 'パン', 'lunch' : 'チャーハン', 'dinner' : 'ハンバーグ'}
  </source>
  </syntaxhighlight>
<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():
200行目: 213行目:
  lunch チャーハン
  lunch チャーハン
  dinner ハンバーグ
  dinner ハンバーグ
  </source>
  </syntaxhighlight>
<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():
215行目: 228行目:
  lunch チャーハン
  lunch チャーハン
  dinner ハンバーグ  
  dinner ハンバーグ  
  </source>
  </syntaxhighlight>
<br><br>
 
== 位置引数・タプル化・辞書化を全て組み合わせる ==
上記に記載した位置引数、タプル化、辞書化を全て組み合わせて使用する。<br>
<br>
以下の例では、food関数の引数に、位置引数、*args、**kwargsを指定して順に出力している。<br>
最初の引数は位置引数として、次の2つの引数はタプル化されて、次の2つのキーワード引数は辞書化されて、それぞれが対応している。
<br>
注意点は、第2引数*argsと第3引数**kwargsの順番を間違えるとエラーになるので順番を間違えないようにすること。<br>
<syntaxhighlight lang="python">
def food(breakfast, *args, **kwargs):
    print(breakfast)
    print(args)
    print(kwargs)
food("パン", "チャーハン", "定食", today="ステーキ", tomorrow="餃子")
# 出力
'パン'
('チャーハン', '定食')
{'today' : 'ステーキ', 'tomorrow' : '餃子'}
</syntaxhighlight>
<br><br>
 
== コールバック関数 ==
Pythonでは、変数に関数を代入したり、関数の引数として関数を定義したり、関数の戻り値として関数を返すことができる。<br>
これにより、Pythonは他の言語では難しいことが行うことができる。<br>
<br>
<syntaxhighlight lang="python">
def hello():
    print("Hello, Python")
def CallbackFunc(callback):
    callback()
CalbackFunc(hello)
# 出力
Hello, Python
</syntaxhighlight>
<br>
 
== 関数内関数 ==
関数は、他の関数を関数の中で定義することができる。<br>
<br>
以下の例では、外側の関数とその中で定義される内側の関数を定義する。<br>
ここでは、外側の関数名をOuterFunc、内側の関数名をInnerFuncとする。<br>
<br>
外側の関数では、2つの引数を加算して、内側の関数では、2つの引数を加えて10倍して、それをprintで出力している。<br>
<syntaxhighlight lang="python">
def OuterFunc(a, b):
    def InnerFunc(c, d):
        return (c + d) * 10
 
    Outvalue = a + b
    InValue = InnerFunc(a, b)
 
    print(a, b, "OutValue =", OutValue, "InValue =" , InValue)
OuterFunc(3, 4)
# 出力
7
70
</syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:Python]]
[[カテゴリ:Python]]