Python入門(1) IDLEを使う

Python IDLE

pythonプログラムを書いたり実行するには、Python用の統合開発環境(IDLEと略記:Integrated DeveLopment Environment)が便利だ。 pythonプログラムのstep by stepの実行あるいは一括実行をしたり(これがどのような意味かはプログラミングするとわかってくる)、プログラムを書いて保存するエディタ機能も備えている。 また、python言語キーワードのハイライトやキーワード自動補完さらにはプログラム書式を自動インデントする機能もそなえている。

IDLEの起動には、IDLEアプリケーション--WindowsではIDLE Python GUI)--をクリックするか、MacOSやLinuxなどではコマンドラインから(小文字で)idleを入力する。

$ idle &

左図は、IDLEを起動してまず表示されるpython shellのウィンドウ(背面ウィンドウ)と[ファイル]メニューから開いた(書いた)pythonプログラム(前面ウィンドウ)の様子である。

Python IDLEはクロスプラットホームで使える。 つまり、Windows、MacOS、Linuxなどで同じ環境のもとにpythonプログラムを開発することが可能だ。 python IDLEのインストール(このリンクはPython3のインストール)はたいへん簡単である(MacOSにはコマンド版python2がインストールされているので、それを使って全く差し支えない)。


Python IDLEの設定

基本的には、Python IDLEはそのままで利用できるが、エディタとしてPythonスクリプトを書いて保存する場合の文字列の符号化をせってしておこう。

左図のように、Preference(設定)の一般タブ(general)で、デフォルト符号化をUFT-8としておこう。 UTF-8にしておくと、何かと都合がよい。


Python Shell

Python IDLEを起動して現れるWindows画面で、Pythonの世界に入る扉である。 または、MacOSやLinuxではコマンドラインでpythonと入力してもよい。

$ python

Python shellを起動すると、基づいているPython情報が表示されて、プロンプト >>> が現れる。 次の例は、MacOSで起動したPython shellの様子である。

$ python
Python 2.7.10 (default, Aug 28 2015, 07:26:38) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

プロンプト >>> につづいてPython文法に合致した文字列(スクリプト)を一行づつ入力して、Enterキーを押して実行結果を確認していこう。

文字列を出力する

print を使って文字列を引用符 " または ' で挟んで出力する。 以下の使い方に注意しよう。

>>> print('Hello, world')
Hello, world
>>> print("Hello, world")
Hello, world

Python2ではprintは print文であり、括弧 ( ) は必須ではなかった。 しかし、Python3では print は関数となって ( ) が必須である。 以降では(出来る限り) printでは ( ) を用いる。

print(関数 print)では、出力する文字列の末尾で自動的に改行される。

演習: Python shellにprintを使うスクリプトを入力して、文字列 I'm using Python を出力しなさい。

SyntaxError

Python文法から逸脱したスクリプトを実行すると構文エラーとなる。

>>> print("Are you OK?')
      
SyntaxError: EOL while scanning string literal
演習: 上の構文エラーを指摘しなさい。

pythonスクリプトをファイルに書く

上のようにして、Python shellのプロンプト >>> にpythonスクリプトを一行ずつ逐次入力して、その結果を確かめるやり方は いかにもまどろっこしい。 事実、Python shellはプログラム実行結果を表示する(出力する)ために用いられるのであるが、Pythonスクリプトはファイルに書き出して、これを実行するようにしてプログラミングするのが一般的である。

Python IDLEを使って新しくpythonスクリプトを書くには、左図のように、[ファイル]メニューから[New File]を選んでpythonファイルとして保存する(Untitledのままではpythonスクリプトを実行できない)。 既に保存してあるスクリプトを編集するには[Open...]を選択する。


Pythonファイルであるためには

とし、余計な問題を発生させないためさらに次のようにする。

演習: Python IDLEを使い、複数のprintを使ったスクリプトで次の実行結果を出力するファイル exsample.py に保存しなさい。 改行やTabスペースがある(2つの文字列が改行されていることがポイント)。
I'm studing a programming language.
It's fun to be with Python.

pythonスクリプトを実行する

Python IDLEから実行

保存したPythonスクリプト(あるいはIDLEメニューの[File]/[Open...]から目的のpythonファイルを開く)を実行するには、 右図のようにPython IDLEの[Run]/Run Moduleを選択する。


上図では、pythonスクリプト exsample.py を次のように書いてみた。

print('Hello, world')
print("I'm using Python")

[Run]/Run Moduleで実行すると、Python Shellに次のような実行結果が表示される。

>>> ================================ RESTART ================================
>>> 
Hello, world
I'm using Python
演習: 作成した example.py をIDLEから実行してみなさい。。

コマンドラインから実行

MacOSやLinuxなどでは、ターミナルウィンドウからコマンド python を使ってpythonスクリプトを渡して実行することができる。

$ python exsample.py

Windowsでコマンド python を実行するためには、実行ファイル python.exe にpathを通しておく必要がある。

演習: 作成した example.py をコマンドラインから実行してみなさい。。

変数を使う

プログラム言語における変数(variable)は値(value)を格納しておく容器(値=飲み物を入れるカップだと思って間違いない)である。 その容器に名前を付けることができ、変数名(variable name)という。 プログラム内では変数によって参照--その中身を取り出したり、同じ変数名である変数の中身を入れ替えたりすることができる。

変数という容器に値を格納する(値を割り当てる)行為を割当または代入(assign)という(代入より、割当という言葉を使うのは良い習慣だ)。 変数に使うことができる文字は、pythonの場合には、おおむね半角英数字とアンダースコア(_)であると思っておこう。 次には変数 boy に値 "Bob" を girl に値 "Alice" を割当て、それらを出力するには次のように書く。

boy = "Bob"
print(boy)

値は文字列でなく、数字でもよい。

age = 19
height = 175.5
print(age, height)

printでは、変数をカンマ(,)で区切って変数値を並べて表示できるが、この結果はPython2(括弧 ( ) は任意)とPython3(括弧お ( )は必須)とでは次のように異なる。

(19 175.5)
19 175.5
演習: 自分の名前(半角ローマ字で!)を name に、身長を height に、生まれた都道府県を birth に割り当てて、それらを表示するスクリプト myprofile.py を書きなさい。 ただし、出力には変数内容だけでなく、
name: 'Tokyo Hanako'
height: 168.5
birth: 'Fukuoka'
とするような配慮が必要だ。

Python2とPython3との差異

Python2とPython3との違いは文字列変数の場合に際立っている。

boy = "Bob"
girl = "Alice"
age = 19
height = 175.5

# Python2で以前から採用されてきた書き方
print boy, girl
print age, height

# Python3で要求される書き方
print(boy, girl)
print(age, height)

このスクリプトをPython2で実行すると次のようになる。

Bob Alice
19 175.5
('Bob', 'Alice')
(19, 175.5)

このスクリプトをPython3で実行しようとすると、printで括弧 ( ) を使っていない7行目でSyntaxErrorになる。

  File "example.py", line 7
    print boy, girl
            ^
SyntaxError: invalid syntax

Python3で実行させるためには print には必ず ( ) を付けて次のように書く必要がある。

boy = "Bob"
girl = "Alice"
age = 19
height = 175.5

# Python3で要求される書き方
print(boy, girl)
print(age, height)

その実行結果は以下のようになる。

Bob Alice
19 175.5

Python3の出力を得るには、Python2では括弧 ( ) を敢えて「使わない」ようにしなければならない。 言い換えると、Pthon3でも通用するように print をPython2で書くと

ということだけを知っていればよい(慣れないうちは細かいことだとして気にしないことだ)。

演習: 現在利用しているPython処理系のversionを調べて、先に作成したスクリプト myprofile.py の実行結果の出力を次のようなるように書き換えなさい(2行で表示され、1行はnameとheightがタブで区切られていることに注意する)。
name: Tokyo Hanako    height: 168.5
birth: Fukuoka

スクリプトはShebangとマジックコメントで始める

Pythonはクロスプラットホームな言語で、基本的なスクリプトであれば大抵のOSで動く。 Windowsで書いたPythonスクリプトは、いつの時かMacOS/Linuxで、あるいはRaspberry Piで動かすかもしれない。 このため、pythonスクリプトの先頭を次の2行で初めることを強く薦めたい。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
    これ以降に、スクリプトやコメントを書く

1行目がshebang(シェバン)で、UNIX系OSスクリプトで起動するインタプリタを指定するために、#!から始まる1行目を書く。 Pythonスクリプトに実行権限がついている場合、コマンドラインからスクリプトを直接実行することができる。 WindowsではShebang行は無視されるので、上の「コマンドラインから実行」のようにインタプリター python を起動してスクリプトを渡す必要がある。

$ ./exsample.py

2行目がマジックコメントで、スクリプトが実行される際にpythonインタプリタは、そのスクリプト内に記載されている文字が指定された文字符号化であることを期待し、正しく処理できる。 今の場合、pythonスクリプトをUTF-8で書くという約束のために utf-8 がある。 この対応関係が破られると、スクリプト実行時にエラーが発生する。 これを shift_jis にするのであれば、スクリプトをShift_JISで保存しておかねばならない。

演習: いままでのPythonスクリプトをShebangとマジックコメントで始め、MacOSまたはLinuxで実行属性を設定して、スクリプトを直接実行しなさい。

スクリプトにはコメントを付ける

# まずは挨拶
print('Hello, world')
# 今の情況を報告
print("I'm using Python")

記号 # 以降から行末まではPythonからは見えない。 上記のように書いても、実行結果にはなんの影響もない。

# を使って、それ以降にコメントを付けるはプログラムの可読性を高める。 適切なコメントを付けることは、良きプログラマーのための第一歩である。

演習: いままでのPythonスクリプトをShebangとマジックコメントで始め、その「内容」をコメントで説明しなさい。 今後のスクリプトはShebangとマジックコメントで始めることにしなさい。