pf-8. 式の抽象化と関数
(Python 入門)
URL: https://www.kkaneko.jp/pro/pf/index.html
1
金子邦彦
① プログラムの中のバグの解決は面倒である
② プログラムの修正時にバグは増えるというこ
とはよくある
2
式の抽象化
3
類似した複数の式
変数 a を使って,複数
の式を1つにまとめる
(抽象化)
a * 1.1
100 * 1.1
150 * 1.1
400 * 1.1
式の抽象化と関数
4
類似した複数の式
変数 a を使って,複数
の式を1つにまとめる
(抽象化)
a * 1.1
100 * 1.1
150 * 1.1
400 * 1.1
式「a * 1.1」を含む
関数 foo を定義
関数 foo を使用.
100, 150, 400 は引数
抽象化がなぜ大切なのか
• プログラミングでの根本問題は何でしょうか?
誤り(バグ)の無いプログラムの作成
• プログラミングの一番の基礎は何でしょうか?
• 抽象化を行うこと.
• 式の抽象化により冗長な記述を避けることができ,
バグの防止やプログラムの変更が容易になる.
5
関数定義
6
• この関数の本体は
「return a * 1.1」
• この関数は,式「a * 1.1」に,名前 foo を付
けたものと考えることもできる
式の抽象化と関数
7
類似した複数の式
実行結果
関数の定義と使用
同じ
実行結果になる
抽象化前
抽象化後
trinket
• Trinket はオンラインの Python、HTML 等の学習サイト
• 有料の機能と無料の機能がある
• 自分が作成した Python プログラムを公開し、他の人に実
行してもらうことが可能(そのとき、書き替えて実行も可
能)
• Python の標準機能を登載、その他、次のモジュールや
パッケージがインストール済み
math, matplotlib.pyplot, numpy, operator, processing, pygal,
random, re, string, time, turtle, urllib.request
8
• trinket は Python, HTML などのプログラムを書き実行できる
サイト
• https://trinket.strivemath.org/python/0fd59392c8
のように、違うプログラムには違う URL が割り当てられる
• 実行が開始しないときは、「実行ボタン」で実行
• ソースコードを書き替えて再度実行することも可能
trinket でのプログラム実行
9
ソースコードの
メイン画面
実行結果
実行、STOP ボタン
演習
関数を定義し使ってみる
ページ11
【トピックス】
• trinket の利用
• 式の抽象化と関数
• 関数定義
• def
10
① trinket の次のページを開く
https://trinket.io/python/68a090babf
② 実行結果が,次のように表示されることを確認
11
① プログラムの中のバグの解決は面倒である
バグ解決と防止には抽象化と関数が不可欠です。関数は
特定の処理の部分を抜き出したものと考えることもでき
ます。抽象化と関数により、同じプログラムを繰り返し
書く必要が減り、エラーの原因となる可能性を低減し,
全体のコードの品質を高めることができます。
② プログラムの修正時にバグは増えるというこ
とはよくある
プログラムの修正は慎重に行うべきです.関数や抽象化
の活用はその作業を容易にします。特定の処理の部分を
関数として定義することで、その処理を何度も書く手間
を省き、修正時のエラー可能性を減らします。その結果、
バグの発生リスクを低減します。
12
全体まとめ
• 式の抽象化は,類似した複数の式を一つにまとめ
ること
• 式の抽象化により冗長な記述を避けることができ,
バグの防止やプログラムの変更が容易になる.
• 関数は式に名前をつける方法で,これによりプロ
グラムの再利用性が向上する
def foo(a):
return a * 1.1
13