2015/11/15

[勉][py]やむを得ず覚えるpython (5)

さて、5回目となったpythonを覚える記事。

http://news.mynavi.jp/news/2015/11/12/134/
こっちの記事では、pythonは5位。

http://news.mynavi.jp/news/2015/11/04/295/
こっちの記事では2位。
まあ、こちらはチュートリアルが検索された回数だから、私みたいな人が興味を持った順位ということか。


コメント

シャープ#がコメントになる。
行の先頭以外でもOK。

複数行コメントは?
トリプルクオーテーション"""で囲むらしい。
でも、"""って改行付き文字列を扱うときのものではないのか?

05.py

  1: #!/usr/bin/python
  2: "yahoo"
  3: print("hell")       #Guten Tag
  4: """
  5: mello yellow
  6: """
  7: 5
  8: pass

$ ./05.py
hell

何もしない行、みたいなものはエラーにならないようだ。


日本語

日本語というか、アルファベット以外の扱いは厳しいようだ。
コメントに日本語を書いても怒られてしまった。

  1: #!/usr/bin/python
  2: print("hell")       #地獄行く

$ ./05.py
  File "./05.py", line 2
SyntaxError: Non-ASCII character '\xe5' in file ./05.py on line 2, but no encoding declared; see
http://python.org/dev/peps/pep-0263/ for details

  1: #!/usr/bin/python
  2: # -*- coding: utf-8 -*-
  3: print("hell")       #地獄行く

1行目か2行目に書け、ということだが、3行目に書いたらどうなるのだ?

$ ./05.py
  File "./05.py", line 4
SyntaxError: Non-ASCII character '\xe6' in file ./05.py on line 4, but no encoding declared; see
http://python.org/dev/peps/pep-0263/ for details

単に、見てくれないだけだ。

では、UTF-8といっておきながらファイルをシフトJISで保存していたらどうなるか?
別に何ともならなかった。
単に、ASCIIコード以外の文字をファイルに書きたいのであればencodingを指定せよ、という程度のようだ。

ただ、こういうのはファイルのエンコーディングを正しく指定しないとエラーになる。

  1: #!/usr/bin/python
  2: # coding: utf-8
  3: print("機能")

(ファイルをシフトJISで保存)
$ ./05.py
  File "./05.py", line 3
    print("?@?\")
                    ^
SyntaxError: EOL while scanning string literal

機能の「能」は、シフトJISだと0x945Cになる。
0x5Cは、ASCIIコードでいえば「\」になるため、次の文字がエスケープされてしまうのだ。

ちゃんとshift-jisと指定すれば、実行できる。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。