PyQを進めています。今日は仕事が休みなので筋トレしてプログラミングして筋トレしてプログラミングして。。。のエンドレスループです。
インデントエラーが連発したので改めて調べた
今までRubyもJavaも
「インデント気をつけて」と言われながらもやんわりとしか実行してなかったし
強いて言えばインデントなんて
「見栄えと言うかコードが読みにくいから綺麗にしてね」ってことだという認識でいました(yamlでちょっとその意識は変わったものの)
Rubyist Magazine - プログラマーのための YAML 入門 (初級編)
しかしPythonはインデントがちゃんと入ってないとそもそも実行さえできないんですよね(もちろん実行できる場合もありますがPyQの場合合格にならない!)。
さらにインデント「とりあえず入ってればオッケーでしょ」ぐらいの感覚で進めていたところこんなに厳密な縛りがあったとは!
Python ではインデント(行頭の空白文字の数)が重要な意味を持ち、同じ数の空白でインデントされた文がブロックとみなされます。
a = 3 if a == 5: print "AAA" # if文の対象 print "BBB" # if文の対象 print "CCC" # if文の対象ではないインデントには通常、4個の空白文字を使用します。タブ文字は、インデントが8の倍数になるように1~8個の空白文字とみなされます。
[空白][空白][TAB]print "AAA" # 8文字の空白とみなされる
知らなかったyo。
かっこでくくらない代わりにインデントでっていうのはもちろん把握していたものの
これって逆にエラーがわかりにくく感じてしまいます。(慣れだと思いますが)
ただし、熟練のプログラマーさんにいつも「コードが見にくい!」と言われていたので
インデントの意識を植え付けられるのでは??と思ったところ確かに書いていました。
この記法の利点は、プログラマーにインデントを強要できることにあります。プログラミング言語の初学者には、インデントの重要性がわからずに全て左詰めでコードを書いてしまうようなことがたまにあります。しかし、Pythonではそれはできません。ifでブロックを書きたければ、インデントするしかないのです。そのため、Pythonのブロックは誰が書いても見やすい物になります。
中括弧やendがないのも利点です。ソース中のノイズが少ない分、本当の処理に意識を集中しやすくなります
確かにPythonのコードは他の言語に比べてすっきり見やすい気がする。整然としてるというか。(たとえ私が書いたとしても)
つい;を使ってしまったり とりあえずインデントなしでガーッと書いてしまったりしてエラーが出まくってなんだよそれ!で、だいたいindent errorが出てます。そういうわけでまだ全然慣れませんけど。
PyQは楽しく進めてます。
Macの電源が切れるまでカフェでこもってPyQをすることにした!
— U-ki@逆立ちする人 (@acro_y) 2017年10月22日
Pythonがんばろー#Python#プログラミング#PyQ