About us 情シスのじかんとは?
糖衣構文の実例を紹介する前に、まずは糖衣構文という摩訶不思議な用語について、少し詳しく解説していきましょう。「糖衣」は、なじみのある言葉で言い換えると「シュガーコーティング」のことです。薬剤を飲みやすくするために表面が甘くコーティングされていたり、ゼリーなどのお菓子の表面が砂糖に覆われていたりしますよね。それが「糖衣」です。
つまり、糖衣構文とは「シュガーコーティングされた構文」ということになります。英語ではシンタックス・シュガー(構文糖)と呼ばれるため少々意訳的ではありますが、日本ではこの呼び方が定着しています。(構文糖、構文糖衣などと呼ばれる場合もあります。)
糖衣構文を使うと、一般的には元の構文よりソースコードは簡潔になります。糖衣構文を使いこなすことで、ソースコードをより短い文字数で書くことを競う「コードゴルフ」などの競技プログラミングを楽しむことができるようになります。
コードゴルフの実例については、過去の記事で紹介していますので合わせてご覧ください!
生成AI×Pythonでコードゴルフにチャレンジしてみました!(Python編) –おつまみとしてのソースコード第2皿 | 情報システム部門を刺激するメディア 情シスのじかん
では、Pythonの糖衣構文にはどのようなものがあるのか、実例を紹介していきます!
糖衣構文のバリエーションや種類は言語によってまちまちです。Pythonは糖衣構文が豊富な言語のひとつですので、覚えがいのある言語であるといえるでしょう。今回は糖衣構文を5つ紹介します!
リスト内表記は、Pythonの代表的な糖衣構文であるといえます。
通常のforループを使って、リストを作る構文の例は次の通りです。1から5の配列を与えて、各要素のべき乗を計算した結果をリストにしています。
糖衣構文のリスト内包表記を使った例文は次の通りです。
こちらは、上の構文と全く同じ動作をします。
糖衣構文の便利さを体感いただけたでしょうか?もしかしたら、知らずに糖衣構文を使っていた、という方もいらっしゃるかもしれませんね。
ラムダ式もPythonの糖衣構文として有名なものであるといえるでしょう。通常、Pythonで名前を持たない小さな関数を定義する際には、defを使って関数定義を行います。
上記の構文を、糖衣構文であるラムダ式を用いて記述すると以下のようになります。
いずれも戻り値は7となりますが、ラムダ関数を用いた関数定義は1行で表記されており、非常にシンプルです。
三項演算子とは、if-else文を一行で表現することができる構文です。三項演算子は、条件式に応じて、異なる値を返す際に使われます。まずはif-else文の通常の書き方を以下に例示します。
Xが5より大きければ「大きい」5以下であれば「小さい」と返す構文ですが、これを三項演算子で表記すると次のようになります。
どちらの場合も、resultに入る値は同じになりますが、三項演算子では、判定分がより簡潔に記述できることがわかります。
Pythonのwith文は、ファイルのオープン・クローズや、データベース接続の確立・切断など、特定の処理の前後に行うべき処理を自動化するための文です。特に、処理の中で例外が発生した場合でも、確実に後処理を実行したい場合に便利です。
例えば、ファイルのオープン・クローズを行う構文では、以下のようにtry-finallyブロックを用いることが多いかと思います。
上記の構文について、with文を用いて書き換えると次のようになります。
なぜこのような書き方でファイルのオープン・クローズが実現できるかというと、with文の前後では、「__enter__()」と「__exit__()」という特殊なメソッドが呼ばれているからです。
「__enter__()」はwithブロックに入る前に実行され、処理の中で使うリソースの確保を行います。
「__exit__()」はwithブロックから出る際、または例外が発生した場合に実行され、通常はリソースの解放を行います。
そのため、例外が発生しても安全にファイルを閉じることができるのです。
Pythonのデコレーターは、関数を装飾(デコレート)して、その機能を拡張する仕組みです。関数に新しい機能を追加したり、既存の機能を修正したりすることができます。
デコレーターは、通常以下のように定義します。定義の方法には糖衣構文は存在しません。
上記のデコレーターを適用する際の通常の書き方は以下となります。
このデコレーターの適用の書き方に糖衣構文が存在します。糖衣構文によるデコレーター適用の書き方は以下の通りとなります。
「@my_decorator」という糖衣構文により、直後に定義した関数にデコレーターを適用することができるようになります。非常に便利ですね!
今まで使ったことのない糖衣構文はあったでしょうか?この他にも、さまざまな糖衣構文が存在します。Pythonだけではなく、他の言語でも使い勝手のよい糖衣構文はたくさん存在します。
糖衣構文は必ずしも可読性が上がるものではありませんが、ソースコードを簡潔に記述するために役立ちます。
みなさんもぜひ糖衣構文について理解を深め、使いこなしていきましょう!
木曜日の夕方に仕事で疲れた脳みそをリフレッシュしたいとき、一人でゆっくりしたい夜、ちょっとした空き時間に、気軽に「つまめる」ソースコードの話題をお届けします。
まるで隠れ家バーでマスターが語るウンチクのように、普段は見過ごしがちなコードの奥深さや、思わず「へぇ〜!」と唸るようなユニークなアイデア、クスッと笑える小ネタを、ソースコードの世界を熟知した「情シスのじかん」がご紹介します。
コードを書くのが大好きなエンジニアさんも、ソースコードはちょっと苦手…という情シス部門の方も、この特集を読めば、きっとソースコードの新たな一面を発見できるはず。
業務効率化のヒントになるTipsや、セキュリティ対策に役立つ情報も盛りだくさん。
さあ、あなたも「おつまみとしてのソースコード」で、技術の世界をもっと身近に、もっと楽しく感じてみませんか?
本特集はこちら30秒で理解!フォローして『1日1記事』インプットしよう!