Python_プログラムの作成と実行
Pythonソースコードの作成
ファイルの拡張子
pythonスクリプトの拡張子は「.py」です。
ソースコードの文字コード指定
ソースコードの文字コードは次のように指定します。
# coding: [エンコーディング名]
# coding=[エンコーディング名]
ex)
# coding=UTF-8
表記の仕方は様々ありますが、Pythonで多く見かけるのは下記のemacs表記です。
ひとまず、ファイルの先頭部分にこれをおまじないとして記述しておき、ファイルの文字コードをUTF-8にしておけば、大抵上手くいきます。
# -*- coding: UTF-8 -*-
仕様書によると、Python では以下の2つの条件にマッチすると「文字コード指定行」と判断されるようです。
・1行目もしくは2行目のコメント行であること
・「coding[=:]\s*([-\w.]+)」の正規表現にマッチすること
インデント
Pythonではインデントでブロック(制御文のまとまり)を表します。
インデントを間違えると、処理が誤って実行されたり、実行失敗するので注意が必要です。
なお、インデントにはスペース4文字が推奨(PEP8という規約上)されています。
コメントとドックストリング
Pythonのコメントは「#」を使用します。
ダブルコート3つでドックストリングというクラスや関数の仕様を記述するためのコメントがあります。
Pythonでhello worldを記述する
Pythonの基本となる書き方をhello worldにしてみました。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
def main():
"""
ダブルコート3つでdocstringとなります
ここに関数の説明を記述します。
"""
# コメント
# 命令文とインデントを合わせる必要があります。
print("hello world!")
pass # passは何もしない文です
if __name__ == "__main__":
main()
Pythonのlintとフォーマッター
pep8とpylintが有名です。
pep8
静的解析ツールとして最も有名なのがpep8です。
# pip install pep8
$ pep8 hello.py
python3.5では下記のように「pycodestyle」への移行を促すメッセージが表示されます。
完全移行が予定されています。
$ pip install pycodestyle
$ pycodestyle ...
pep8形式にフォーマット変換を行うツールがautopep8です。
「pycodestyle」への移行に伴い、コマンド名が変更される可能性があります。
# pip install autopep8
$ autopep8 -i hello.py
pylint
pylintも有名な静的解析ツールです。
# pip install pylint
$ pylint --generate-rcfile > pylintrc
$ pylint hello.py
pylintとともに用いることが多いフォーマット変換を行うツールがyapfです。
# pip install yapf
$ yapf -i hello.py
yapf -d test.pyとすれば差分が表示され、yapf -i test.pyとすれば整形結果でファイルが上書きされます。
ディレクトリを再帰的に処理したい場合は-rオプションを指定します。
Pythonの実行
インタプリタ(対話モード)実行
pythonコマンドを実行すると対話モードで実行できます。
インタプリータを終了させるには、「ctrl-D」または「quit()」 を入力します
$ python
Python 3.5.4 (default, Mar 12 2018, 00:30:17)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 2+5
7
スクリプト実行
pythonコマンドの引数にスクリプトファイルを指定することで実行できます。
$ python hello.py
スクリプトファイルを実行する
スクリプトファイルを実行する場合、スクリプトファイルの先頭にpythonコマンドへのパスを記述します。
#!/usr/local/pyenv/shims/python
もしくは、envコマンドがあり、pythonコマンドへのパスが設定されていれば下記のように記述できます。
#!/usr/bin/env python
そして、スクリプトファイルを実行します。
$ chmod 755 hello.py
$ ./hello.py