皆さんこんにちは。imelのシステムインテグレーションチームでソフトウェア開発をしています、坂田です。
本日は自分の好きなPythonのオススメ機能を紹介します。
便利な記述を3件ご紹介します。難しい内容でもないので、サクッと読んじゃってください!
1. リスト内包表記 (List Comprehensions)
コンパクトにリスト配列を作成するなら、やっぱりこの書き方です。
要素の加工や特定の条件を満たす要素のみでリストを再構成したいなど、いろんな用途でもシンプルにリスト配列を作成することができるので便利です!
numbers = [1, 2, 3, 4, 5]
# 例1
squared = [x ** 2 for x in numb_ers]
# 例1結果
print(squared)
# [1, 4, 9, 16, 25]
# 例2
even_numbers = [x for x in numbers if x % 2 == 0]
# 例2結果
print(even_numbers)
# [2, 4]
上記簡単に解説します。
例1では、正方形の面積をリストから計算しています。
numbersリストの一つ一つの値を2乗計算し、各値に対する正方形の面積を算出しています。
例2では、numbersリストの一つ一つの値を2で除算し、割り切れる数を抽出しています。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
row_averages = [sum(row) / len(row) for row in matrix]
print(row_averages) # 出力: [2.0, 5.0, 8.0]
視点を変えて、2次元配列のパターンで考えてみます。
matrixは、二次元配列です。
for文で二次元配列の各行を取得し、取得できた各行に対して、1行ごとに合計値を行の要素数で割ります。
そうすると各行ごとに平均値が求まります。
これをリストに格納しています。
この一連の流れを1行で実現できる。やっぱリスト内包表記は便利ですね~。
2. デコレータ(Decorators)
デコレータとは、関数やメソッドをラップし、機能の追加や変更を行うことができるようにするためのものです。
認証やログ出力など、関数やメソッドを実行するときに実行したい処理があれば、追加できます。
実際の例を見てみましょう。
# decotrator function
def decorator_func(func):
def wrapper(*args, **kwargs):
print("デコレータが呼び出されました。")
print(f"関数の名前は、{func.__name__} 引数は、 {args}, キーワードは、 {kwargs}")
result = func(*args, **kwargs)
print(f"{func.__name__} 返却された結果は、 {result}")
return result
return wrapper
# warp
@decorator_func
def add(a, b):
return a + b
print(add(5, 7))
上記のように、add関数を呼び出す前にデコレータ関数を呼び出すことができています。
認証やまとめて関数を実行したいことがある時にとても便利な関数になると思います。
3. with文
with 文を利用すると、リソースの確保と解放を自動的に行うことができます。
ファイルのオープン/クローズやロックの取得/解放などで便利です。
with open('file.txt', 'r', "utf-8") as f:
content = f.read()
print(content)
# impl最高
# ブロックを抜けるとファイルは自動的にクローズされる
最後に
いかがだったでしょうか?Pythonは非常にシンプルな言語で学習が非常にスムーズに行えます。(筆者はPythonの後、Typescriptを学んで苦労しました。。。)
英語を学んだことがある人にとっては、プログラミング言語の選定・サーバーサイド言語への挑戦を考える非常に適した言語だと思います。正直筆者はPythonを使うようになってから、できないことのない無敵な言語じゃない?といつも思って利用しています。
是非皆様もPythonの利用を検討してみてください。それでは次回にお会いしましょう。