Elevator Pitch
Pythonを学ぶ上で、if文、for文、関数定義を皆さん学びますよね。そのときにifやforの行にはコロンが必要なことや、続く行をインデントする必要があることも学ぶでしょう(SyntaxErrorが出てしまいますからね)。では、このコロンやインデントはなぜ必要なのでしょうか?そう決まっているからではあるのですが、Python言語リファレンスで「文」を深堀ることで私は納得の行く説明にたどり着きました。さらに文の深堀りは、構文の定義にも繋がります。BNF記法で簡潔に抜け漏れなく表された構文定義をこのトークのひと時で一緒に味わってみませんか?
Description
Pythonの構文をテーマに、リファレンスのBNF記法を読んで一緒に味わうトークです。
2021年11月のOSC Fukuoka用に準備したのですが、Python使い向けに再構成して話します。 https://ftnext.github.io/2021_slides/osc_fukuoka_Nov/revisit_python_from_statements.html
if文、for文、関数定義は知っていて書ける方(=入門書は終えた方)向けに話します。
聴衆が持ち帰れるもの
- 文の構成要素:式とキーワード
- 節、ヘッダ、スイートによる文の説明
- BNF記法の読み方
BNF記法を読む対象の文
- if文
- for文
- while文
- 関数定義
- match文
なぜこの話をしたいのか
何も知らない人にif文を説明するとき、elseの有無やelifの個数で場合分けしたのですが、説明の抜け漏れの検証がとても大変でした。 その後、リファレンスを読んだ時、BNF記法によってif文がたった3行で抜け漏れなく示されるのは大きな感動でした。 言語リファレンスは難しいと考えている方が多いかもしれませんが、言語リファレンスで得た感動を共有して、興味を持つ人が増えたらと思います。 私自身言語リファレンスに興味を持ったことでPython使いとしてGrow(成長)したと思っており、聞いた方のGrowにつながったら素敵だなと想っています(with Covid-19とはリンクしないのですが、コアの理解はどんな状況であってもGrowのために大切と信じています)
Notes
Tagsは「Python core」タグを付けたいのですが、ないようですので「その他」を選びました