やむを得ないが、pythonを覚えよう。
1日1時間程度を目安にする。
pythonが嫌いなわけではなく、スクリプト言語全般を苦手としているのだが、読めるだけじゃなくて書けないと不便になりつつあるので、C/C++ならわかる人がその違いで覚えるイメージで書いていく。
書きつつ覚えるので、間違ってたらすまん。
過去にpythonを書いたのは、これがあった。
hiro99ma blog: [py]ハードタブは1~8スペース扱い
環境
うちはcygwinでやる。つまり、Windowsだ。
$ python --version
Python 2.7.10
$ which python
/usr/bin/python
Hello World
PY習 やっぱり最初は"Hello World"
条件とか特にないから、こんなんで動くか?
#!/usr/bin/pythondef main():
print("Hello, World!")
$ ./01.py
$
だめやった。
#!/usr/bin/pythondef main():
print("Hello, World!")main()
$ ./01.py
Hello, World!
出た。
つまり、こういうことか。
#!/usr/bin/pythondef hiro99ma():
print("Hello, World!")hiro99ma()
$ ./01.py
Hello, World!
出た。
固定のエントリポイントは存在せず、地の文?に書いたものがそのまま実行されるということか。
#!/usr/bin/pythonhiro99ma()def hiro99ma():
print("Hello, World!")
$ ./01.py
Traceback (most recent call last):
File "./01.py", line 2, in <module>
hiro99ma()
NameError: name 'hiro99ma' is not defined
前方参照だ。
#!/usr/bin/pythondef hiro88ma():
print("Goten Morgen!")hiro88ma()def hiro99ma():
print("Hello, World!")hiro99ma()
$ ./01.py
Goten Morgen!
Hello, World!
地の文と関数が混ざっていても、平文が上から順番に実行されている。
地の文
なんと呼ぶのかわからないけど、関数じゃないところに書いた実装を地の文を呼んでおこう。
#!/usr/bin/pythonprint("Hello, World!")
$ ./01.py
Hello, World!
#!/usr/bin/pythonprint("Hello, World!")
$ ./01.py
File "./01.py", line 2
print("Hello, World!")
^
IndentationError: unexpected indent
インデントには厳しい。
エントリポイント?
#!/usr/bin/pythonif __name__ == "__main__":print("Hello, World!")
$ ./01.py
Hello, World!
よくこういう書き方をしているが、これは関数?
でもdefがついていないから、ちょっと違うと思う。
ああ、単なるif文だ。
「__name__が"__main__"だったら」ということだ。
if __name__ == '__main__': について - へたれプログラマな日々
他と一緒に使うときにはエントリポイントじゃないけど、単独で呼び出されたときはエントリポイントになる、という動きみたいだ。
C言語っぽいイメージでいえば、#ifdefでmain()が囲まれていて、定義されてコンパイルしたときだけmain()が有効になる、みたいなところか。
単独でも動いて、他のがあっても動くと私の場合迷ってしまいそうだから、なるべく書かないようにしておこう。
ただ、エラーくらいは出したいのだが、こんな感じか?
#!/usr/bin/pythonimport sysif __name__ == "__main__":sys.stderr.write("not main!\n")exit(-1)
$ ./01.py
not main!
$ echo $?
255
まあ、よかろう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。