この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
サーバーレス開発部@大阪の岩田です。 AWSのブログをチェックしていたところ、LambdaがPython3.7に対応したという記事を発見したので早速触ってみました。 https://aws.amazon.com/jp/blogs/compute/python-3-7-runtime-now-available-in-aws-lambda/
マネジメントコンソールを確認
ランタイムの選択肢にPython3.7が追加されています。
バージョンを確認
print (sys.version)
でバージョン情報を出力してみました。
3.7.1が使われているようです!
Python3.7の新機能を試してみる
試しにPython3.7の新機能であるdataclassのデコレータを使って見ました。
import json
from dataclasses import dataclass
@dataclass
class InventoryItem:
'''Class for keeping track of an item in inventory.'''
name: str
unit_price: float
quantity_on_hand: int = 0
def total_cost(self) -> float:
return self.unit_price * self.quantity_on_hand
def lambda_handler(event, context):
item = InventoryItem('item1', 100, 10)
# TODO implement
return {
'statusCode': 200,
'body': json.dumps({
'total_cost': item.total_cost()
})
}
InventoryItemクラスのコンストラクタを特に実装していませんが@dataclass
と記述しておくことで、よしなにやってくれています。
試しにランタイムをPython3.6に変えて試してみると・・・
エラーになり実行できません。想定通りです。
最後に
Pythonをメインに使っている開発者としては地味に嬉しいアップデートです。 Python3.7の新機能をうまく使って、保守性の高い良いコードを書けるように心がけていきたいです!