99
Python関数の作成と使用方法

関数は驚くほど強力です。私たちは日常生活で関数を使っています。両親に「部屋を掃除しなさい!」と言われたら、何をすればいいのかすぐに分かりました。関数とは、名前を呼ぶと実行されるコードブロックです。しかし、関数はそれだけではありません。関数には引数(パラメータ)を渡すことができます。例えば、センサーからの最新の温度を関数に渡し、その関数を使ってファンを作動させることができます。また、関数を使って辞書の内容を読み取り、そこに保存されているデータを操作することもできます。

このハウツーでは、関数の概念とその最も強力な機能のいくつかを紹介します。また、PCの現在の状態を読み取り、そのデータをPythonシェルに提供するプロジェクトを構築します。

Python で関数を使用する方法を説明するために、無料で使いやすく、クロスプラットフォームの Python エディターである Thonny を使用します。 

始める前に、まだインストールしていない場合はThonnyをインストールしてください。

リリースをダウンロードする

アプリの公式サイトで、お使いのシステムに合ったものをご確認ください。

あるいは、公式のPythonリリースをインストールすることもできます

このガイドを使用する

このガイドでは、Windows 10 および 11 へのインストールについて説明します。

Pythonで関数を作成する方法

Python関数

(画像提供:Tom's Hardware)

関数は「def」キーワードを使って「定義」されます。関数名が呼び出されると、関数の内容が実行され、出力がPythonシェルに送信されます。

1. helloという関数を作成します。プログラミングの慣例に従い、「Hello World」を使って関数の使い方を簡単に説明します。

def hello():

2. 10回反復(ループ)する for ループを追加します。for ループは、あらゆるプログラミング言語でアクションを繰り返すための簡単な方法です。ここでは範囲指定を使用してループ回数を設定していますが、for ループはリスト、辞書、タプル内のオブジェクトも反復処理できます。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

 for i in range(10):

3. print を使って、Python シェルに「Hello World!」を出力します。printは Python の組み込み関数です。オブジェクトを出力するのが役割です。出力したいメッセージは「引数」または「パラメータ」と呼ばれ、これについては後ほど説明します。

 print("Hello World!")

4.コードをhello_world.pyとして保存し、「実行」>>「現在のスクリプトを実行」をクリックするか、緑色の実行ボタンを押します。何が起こるでしょうか?ここで関数の動作を確認するためのミスを犯しています。関数は作成済みですが、まだ呼び出していないため、Pythonはコマンドを待機しています。

5. forループや関数内ではなく、新しい行で関数名を呼び出します。関数名の末尾に括弧を忘れずに付けてください。

hello()

6. 「実行」>>「現在のスクリプトを実行」をクリックするか、緑色の実行ボタンを押します。Pythonシェルに「Hello World!」が10回表示されます。

Python関数

(画像提供:Tom's Hardware)

完全なコードリスト: 単純な関数

def hello(): for i in range(10): print("Hello World!")
hello()

引数付き関数の作成方法

Python関数

(画像提供:Tom's Hardware)

引数(パラメータと呼ばれることもあります)は、オブジェクトへの追加の指示です。Pythonの関数は引数を使用できます。引数は括弧内に追加するだけです。デフォルトでは、Pythonは関数内で引数を検索しません。そのため、関数にテンプレートまたは期待値を設定する必要があります。 

このセクションでは、「Hello World!」関数を2つの引数を受け取るように変更します。1つ目はforループの反復回数、2つ目は繰り返したいフレーズです。引数を指定する際は、正しい数値を渡す必要があります。関数に2つの引数を指定した場合、2つ渡す必要があります。そうしないと、関数呼び出しでエラーが発生します。

1. helloという関数を作成し、xとphraseという2つの引数を渡します。xはループ回数を表すプレースホルダーとして使い、「phrase」は出力したいメッセージを表します。

def hello(x, phrase):

2. x回繰り返すforループを追加します。ループの繰り返し回数はx引数で制御します。

 for i in range(x):

3. print を使って、引数「phrase」をPythonシェルに出力します。phraseは関数呼び出し時に設定されることに注意してください。

 print(phrase)

4. forループや関数内ではなく、新しい行で関数名を呼び出し、2つの引数を渡します。ループ回数(x)と出力するメッセージです。ここでは5回ループし、「Tom's Hardware」と出力します。独創的ではありませんが、プロジェクトの目的を明確に示しています。

hello(5, "Tom's Hardware")

5.コードをhello_world.pyとして保存し、「実行」>>「現在のスクリプトを実行」をクリックするか、緑色の実行ボタンを押します。引数で指定した回数だけ、フレーズがPythonシェルに出力されます。 

完全なコードリスト: 引数を持つ関数 

def hello(x, phrase): for i in range(x): print(phrase)
hello(5, "Tom's Hardware")

デフォルト引数とキーワード引数を持つ関数の作成方法

Python関数

(画像提供:Tom's Hardware)

関数に引数を渡しましたが、デフォルト引数を設定することもできます。ユーザーが引数を設定せずに関数が渡された場合、デフォルト引数が受け入れられ、使用されます。以下は、デフォルト引数にnameを指定した簡単な例です。デフォルト名は私自身の名前で、関数内でユーザーに挨拶するために使用されています。name引数を渡すだけで、新しい名前付き挨拶を作成できます。

1.デフォルト引数にnameを持つ関数を作成します。もちろん、名前はお好みに合わせて変更してください。

def whoareyou(name = "Les"):

2. name 引数を使って、ユーザーへの挨拶文を出力します。ここでは、Python の文字列フォーマットメソッドを使って、name 引数を文字列として挿入します。

 print("Hello {:s}!".format(name))

3.引数なしで関数を呼び出します。これにより、デフォルト名が使用されていることが確認できます。

whoareyou()

4.関数を呼び出し、新しい名前を引数として渡します。関数の呼び出しは関数自体の外で行われます。

whoareyou("Dave")

5.コードをname.pyとして保存し、「実行」>>「現在のスクリプトを実行」をクリックするか、緑色の実行ボタンを押します。コードが2つの挨拶を出力しているのがわかります。1つはデフォルト用、もう1つは「Dave」用です。

完全なコードリスト: デフォルト引数を持つ関数

def whoareyou(name = "Les"): print("Hello {:s}!".format(name))
whoareyou()
whoareyou("Dave")

Python関数

(画像提供:Tom's Hardware)

キーワード引数は、複数の引数を渡す必要がある場合に便利です。この例では、古典的なMad Libs構造を用いて、名詞、動詞、物を含む文を作成しています。key = value構造を指定するため、引数の順序は重要ではありません。

1.関数を作成し、3 つの引数を受け入れるように設定します。

def madlibs(noun, verb, thing):

2.名詞、動詞、物を表す文字列をPythonシェルに出力する文を作成します。ここでも、Pythonの優れた文字列フォーマットメソッドを使って、引数を文に挿入します。

 print("The {:s} {:s} over the {:s}.".format(noun, verb, thing))

3.コードを madlibs.py として保存し、「実行」 >>「現在のスクリプトを実行」をクリックするか、緑色の実行ボタンを押します。

4. Pythonシェルで関数を呼び出し、3つの引数を渡します。キーを使うことを忘れないでください。そうしないと順序が間違ってしまいます。Enterキーを押してコードを実行します。カスタムキーワードを使った文が表示されます。

madlibs(noun = "rabbit",verb = "jumped",thing ="gate")

完全なコードリスト: 複数の引数を持つ関数

def madlibs(noun, verb, thing):
print("The {:s} {:s} over the {:s}.".format(noun, verb, thing))

関数を使用してPCパフォーマンスデータを取得する

関数の使用方法を説明するために、psutil (プロセスおよびシステム ユーティリティ) Python モジュールを使用してライブ CPU および RAM データを取得する簡単な Python プロジェクトを作成します。このモジュールは、CPU、RAM、ディスク、ネットワーク、およびその他のセンサーに関するデータをすべて Python を使用して取得できます。

コードを書く前に、psutil モジュールをインストールする必要があります。

1. Thonny で、「ツール」>>「パッケージの管理」をクリックします。

Python関数

(画像提供:Tom's Hardware)

2. psutil を検索し、PyPi で検索をクリックします。

Python関数

(画像提供:Tom's Hardware)

3.返された結果から psutil を選択します。

Python関数

(画像提供:Tom's Hardware)

4. psutil をインストールし、完了したらダイアログボックスを閉じます。psutilはすでにインストールされているため、ダイアログの表示が少し異なります。

Python関数

(画像提供:Tom's Hardware)

5. Thonny で新しいファイルを作成し、psutil モジュールをインポートします。

import psutil

6. cpu() 関数を作成します。この関数は現在のCPU使用率を取得し、変数に格納します。そして、その値を文字列形式でPythonシェルに出力します。

def cpu(): cpu = str(psutil.cpu_percent()) print("Current CPU usage is {:s}%".format(cpu))

7.新しい関数 ram() を作成します。print文と数式を使って、前後に10 * が付いたタイトルを出力します。この関数は、現在利用可能なメモリ量を取得するために必要なすべての手順を処理します。

def ram(): print("*"*10,"RAM Stats","*"*10)

8.現在のメモリ統計を取得し、「memory」という変数に保存します。

 memory = psutil.virtual_memory()

9.現在利用可能なRAMの容量を抽出し、変数に格納します。メモリオブジェクトは、最初に合計メモリ、使用可能メモリ、使用率、使用済みメモリ、空きメモリを返します。返されるオブジェクトはリストであり、リストの2番目の値である[1]が必要です。

 memory = memory[1]

10.メモリの量をメガバイトに変換し、読みやすいように値を丸めます。

 memory = round(memory / 1024 / 1024)

11.使用可能なメモリの量をPython シェルに出力します。

 print("There is {:n}MB of available RAM".format(memory))

12. cores() という関数を作成します。この関数は、CPU の物理コア数とスレッド数を返します。

def cores():

13. CPUコアの物理数とスレッド数を格納するオブジェクトを作成します。引数logical=Falseを設定すると、psutilは物理コア数のみを返すようになります。

 physical = psutil.cpu_count(logical=False) threads = psutil.cpu_count()

14.物理コア数とスレッドを Python シェルに出力します。

 print("This CPU has {:n} cores and {:n} threads".format(physical, threads))

15.新しい関数 cpuspeed() を作成します。print文と数式を使って、前後に10個の * が付いたタイトルを出力します。

def cpuspeed(): print("*"*10,"CPU Stats","*"*10)

16.現在のCPU速度データをspeedというオブジェクトに保存します。次に、現在の速度を抽出し、オブジェクトを更新します。最初に、現在の速度、最小速度、最大速度の3つの値を含むタプルを含むリストを取得します。したがって、リストの最初のエントリ[0]からデータを取得し、次にタプル[0]の最初のエントリを取得する必要があります。

 speed = (speed[0][0])

17.速度を Python シェルに出力します。

 print("The CPU speed is {:n} MHz".format(speed))

18. all() という関数を作成し、それを使って前述のすべての関数を呼び出します。関数は他の関数を呼び出すことができます。

def all(): cpuspeed() cores() cpu() ram()

19. try / except ハンドラを作成し、 while True: を使ってコードを実行します。このセクションでは、コードの実行を試みます。

try: while True:

20.オブジェクト stat を作成し、ユーザーの選択を保存します。input () 関数を使用して、ユーザーからのキーボード入力を取得します。また、ユーザーに選択を尋ねるプロンプトを作成することもできます。

 stat = input("Please type 'cpu', 'ram', 'cores', 'cpuspeed' or press ENTER to show all stats: ")

21.条件テストを使用して、stat に格納されている値を確認し、コードを正しいオプションにルーティングします。

 if stat == "cpu": cpu() elif stat == "ram": ram() elif stat == "cores": cores() elif stat == "cpuspeed": cpuspeed()

22. else を catch all オプションとして使用し、all() 関数を呼び出して、関数の対象となっているすべての統計を表示します。

 else: all()

23.ユーザーがCtrl+Cを押してコードを終了した場合の処理​​として例外を作成します。これにより、Pythonシェルに「Exiting」と表示されます。

except KeyboardInterrupt:
print("Exiting")

24.コードをperformance.pyとして保存し、「実行」>>「現在のスクリプトを実行」をクリックするか、緑色の実行ボタンを押します。Pythonシェルが入力を求めてきます。指示に従うと、要求したデータがシェルに表示されます。

Python関数

(画像提供:Tom's Hardware)

完全なコードリスト: 関数を使用して PC パフォーマンスデータを取得する

import psutil
def cpu(): cpu = str(psutil.cpu_percent()) print("Current CPU usage is {:s}%".format(cpu))
def ram(): print("*"*10,"RAM Stats","*"*10) memory = psutil.virtual_memory() memory = memory[1] memory = round(memory / 1024 / 1024) print("There is {:n}MB of available RAM".format(memory))
def cores(): physical = psutil.cpu_count(logical=False) threads = psutil.cpu_count() print("This CPU has {:n} cores and {:n} threads".format(physical, threads))
def cpuspeed(): print("*"*10,"CPU Stats","*"*10) speed = psutil.cpu_freq([1]) speed = (speed[0][0]) print("The CPU speed is {:n} MHz".format(speed))
def all(): cpuspeed() cores() cpu() ram()
try: while True: stat = input("Please type 'cpu', 'ram', 'cores', 'cpuspeed' or press ENTER to show all stats: ") if stat == "cpu": cpu() elif stat == "ram": ram() elif stat == "cores": cores() elif stat == "cpuspeed": cpuspeed() else: all()
except KeyboardInterrupt:
print("Exiting")

その他のPythonチュートリアル

  • Windows 10と11にPythonをインストールする方法
  • PythonでForループを使う方法
  • Pythonで列挙する方法
  • Pythonで実行可能なアプリケーションを作成する方法
  • Pythonで画像から背景を削除する方法
  • Python、HTML、ThonnyでWebアプリを作成する方法
  • Raspberry Pi カメラモジュール 3 を Python コードで使う方法