Perl,RubyときたのでPythonです。
コマンドラインを使うときの言語にこだわりはなく、パイプが上手くつながればいいんじゃないかぐらいの感覚でPythonも使います。使うといっても他の言語と同じく入門的なことしか覚えてませんが。
Python2.7と3の違いも良く分かってないので、なるべく3の方を使っていこうかと思います。
私がPythonで一番好きなところは、{}ではなく:を使うところです。
Perl
if($a > 10){ 処理1 処理2 処理3 : }
Python
if a > 10: 処理1 処理2 処理3 :
なぜだかうっとりします。Lispの()を美しいと思ってしまうのと同様、どこから湧き出すのかわからない感覚です。
ではPython使っていきましょう。私のdebian9の環境ではデフォルトでインストール済でした。まずはバージョンから。
takk@deb9:~$ python --version Python 2.7.13 takk@deb9:~$
おっと。バージョン2.7になってます。3.xを使おうと思ったんですがどこにあるんでしょうか。whichしてみます。
takk@deb9:~$ which python /usr/bin/python takk@deb9:~$
/usr/bin/の下にありました。実体を確認するため、ls -lします。
takk@deb9:~$ ls -l /usr/bin/python lrwxrwxrwx 1 root root 9 1月 24 2017 /usr/bin/python -> python2.7 takk@deb9:~$
同じ/usr/bin配下にあるpython2.7へのシンボリックリンクでした。
そちらの実体も見てみましょう。
takk@deb9:~$ ls -l /usr/bin/python2.7 -rwxr-xr-x 1 root root 3783608 1月 19 2017 /usr/bin/python2.7 takk@deb9:~$
こちらはバイナリ本体のようです。
ってことは、3.xがあるならここにありますよね。
takk@deb9:~$ ls -l /usr/bin/python* lrwxrwxrwx 1 root root 9 1月 24 2017 /usr/bin/python -> python2.7 lrwxrwxrwx 1 root root 9 1月 24 2017 /usr/bin/python2 -> python2.7 -rwxr-xr-x 1 root root 3783608 1月 19 2017 /usr/bin/python2.7 lrwxrwxrwx 1 root root 9 1月 20 2017 /usr/bin/python3 -> python3.5 -rwxr-xr-x 2 root root 4747120 1月 19 2017 /usr/bin/python3.5 -rwxr-xr-x 2 root root 4747120 1月 19 2017 /usr/bin/python3.5m lrwxrwxrwx 1 root root 10 1月 20 2017 /usr/bin/python3m -> python3.5m takk@deb9:~$
python3.xは、3.5でpython3にシンボリックリンクされていました。
ではHello Worldから。こんな感じで動くでしょうか。
takk@deb9:~/py$ cat hello.py print "Hello World!" takk@deb9:~/py$
python2.7と3.5両方実行してみます。
takk@deb9:~/py$ python hello.py Hello World! takk@deb9:~/py$ python3 hello.py File "hello.py", line 1 print "Hello World!" ^ SyntaxError: Missing parentheses in call to 'print' takk@deb9:~/py$
2.7は動きましたが、3.5はエラーになりました。
3.xでは、printは()が必要なんですね。
takk@deb9:~/py$ cat hello.py print("Hello World!") takk@deb9:~/py$ python hello.py Hello World! takk@deb9:~/py$ python3 hello.py Hello World! takk@deb9:~/py$
()をつけたら、2.7でも3.xでも両方動くようになりました。
3.xの書き方を覚えていくのが無難なようです。
コメント