Python

【Python】.piファイルを作成して『Hello World』を表示する

2019/05/18

Python3のインストールが終わりましたので、次はプログラムを組んでみたいと思います。
最初はやはり「Hello, World!」から始めるのが常道ということで、まずはおなじみのワードを表示させてみたいと思います。

Hello, Worldファイルを作成、実行する

テキストエディタを立ち上げ、以下内容を入力。

[python]
print("hello, World!")
[/python]

hello.pi というファイル名で任意のディレクトリ(フォルダ)に保存します。

DOS窓(コマンドプロンプト)を起動します。
先程.piファイルを保存したパスまで移動し、下記コマンドを実行すると。。。

[python]
Python hello.pi
[/python]

『hello, World!』が表示されました。

↑ ドライブ変更、ディレクトリ変更、dirでファイル一覧を表示し、hello.piを実行した結果

日本語で「こんにちは、世界!」を表示してみる

アルファベットで表示ができたら、次は日本語で表示してみましょう。
同様に以下の内容を記述し hellojp.pi として保存します。

[python]
print("こんにちは、世界!")
[/python]

で、先と同じように hellojp.pi を実行します

[python]
Python hellojp.pi
[/python]

すると以下のように、シンタックスエラーが表示されます。

[default]
I:\GoogleDrive\website_data\PYTHON\hello>python hellojp.pi
File "hellojp.pi", line 1
SyntaxError: Non-UTF-8 code starting with '\x82' in file hellojp.pi on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
[/default]

Pythonにて日本語を使用する場合は、必ず文字コードを「UTF-8」にて保存する必要があります。
先程は何も考えずにShift_JISにて保存したから出たエラーのようです。

気を取り直して、UTF-8にて保存し、再度トライ。

↑ 今度はちゃんと表示されました。

エンコーディング宣言について

いくつか初心者向けサイトを巡っていたのですが「日本語を使う際は先頭行に『エンコーディング宣言』を記述する必要がある」と読みました。

[python]
# -*- coding: utf-8 -*-
[/python]

↑ UTF-8のエンコーディング宣言

しかし先程は何も書かず、単にUTF-8で保存するだけで日本語が表示できてしまいました。
そもそも本当に必要かどうかが判断つかなかったので調査したところ、以下のようにまとめられておりました。

  • ソースが UTF-8 の場合 Python3 では記載は不要(PEP-8 では、記載はむしろ非推奨)
  • ソースが UTF-8 の場合、Python2 では記載が必須
  • エンコーディング宣言を記載する場合は、1 行目 or 2 行目に記載すること
  • 以下のいずれの記述方法でも構わない
      • # coding: utf-8
      • # coding:utf-8
      • # coding=utf-8
      • # -*- coding: utf-8 -*- (Emacs 併用)
      • # -*- coding:utf-8 -*- (Emacs 併用)
      • # vim:fileencoding=utf-8 (Vim 併用)

さらに、

Python3 の公式マニュアルでは、「デフォルトでは、Python のソースコードは UTF-8 でエンコードされているものとして扱われます。

とのことで、Python3ではUTF-8で保存さえしておけばそもそも不要らしいですね。

Pythonで使える文字コード

参考までに、Pythonで使える代表的な文字コードを列挙しておきます。
更に詳しくは「Python標準ライブラリ」の「7.8.3. 標準エンコーディング」を参照のこと。

UTF-8 (utf_8) Unicode/UCSで定義された文字符号化の1つ。OS X環境の日本語の文字コード
Shift-JIS (shift_jis) PC(パソコン)で用いられていた日本語の文字コード
EUC-JP (euc_jp) Unix環境で用いられていた日本語の文字コード
Code Page 932 (cp932) Windows環境の日本語の文字コード。Shift-JISの1つのバリエーション
ISO-2022-JP (iso2022_jp) 電子メールの送受信に用いられる日本語の文字コード

各文字コードのエンコーディング宣言

[python]
# coding: utf-8
# coding: Shift_JIS
# coding: EUC-JP
# coding: cp932
[/python]

参考にしたサイト

-Python
-