HelloWorld

Hello World

文字列 “Hello World”を出力するのは新しいプログラミング言語を学ぶ時に一番最初に紹介する定番のプログラムです。ここでもやはり最初に “Hello World” と出力するプログラムを動かしてみます。

helloworld.py ← リンクされているPythonのサンプルコードはダウンロードすることができます。

# File: helloworld.py
print("Hello World")

ターミナルで実行するには以下のようにします。

$ python helloworld.py 
Hello World

プログラムの実行

コマンド python (もしくは python3)は、プログラムファイル helloworld.pyを実行するためのインタプリタのプログラムです。

一般にプログラムを実行する方法は大きく分類して3つのタイプがあります。

Pythonの実行はインタプリタ方式、コンパイル方式、ハイブリット方式なのかということでいえば、「どの方式もある」が答えになります。プログラムを動かす処理系はインタプリタ方式の実行系、バイトコード方式の実行系、またまたコンパイル方式の実行系のいずれも存在しています。

Pythonとはプログラミング言語仕様のことであり、Pythonの実行系の実装とは独立しているからです。

Pythonの実行について

先程は、プログラムをファイルとして与えていたので、どのような方式で処理されたのかイメージがつかめなかったかもしれません。今度は、コマンドの形でpythonを使いインタラクティブ(対話的に)に実行してみます。

$ python
Python 3.7.3 (default, Mar 27 2019, 22:11:17) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World")
Hello World
>>> (control-Dを入力)

バイトコードにコンパイルをした後に実行する例です。helloworld.cpython-37.pyc がバイトコードになります。バイトコードを実行する方が処理が速いのですが、今回のような処理が少ないコードでは差は人間が認知できないレベルです。

$ ls
helloworld.py
$ python helloworld.py 
Hello World
$ python -m py_compile helloworld.py 
$ ls
__pycache__  helloworld.py
$ python __pycache__/helloworld.cpython-37.pyc 
Hello World

コンパイルしてバイナリファイルを作成し実行する例です。ここではコマンドpyinstallerを使っています。あまり一般的ではありません。この例ではGNU/Linux環境でコンパイルしているので、他のプラットフォーム (例えば Windows や Mac ) でのメッセージなどとは異なる可能性があります。

$ pyinstaller helloworld.py --onefile
pyinstaller helloworld.py --onefile
948 INFO: PyInstaller: 4.5.1
948 INFO: Python: 3.7.3 (conda)
949 INFO: Platform: Linux-5.11.0-41-generic-x86_64-with-debian-bullseye-sid
...
7965 INFO: Building EXE from EXE-00.toc completed successfully.
$ ls
__pycache__  build  dist  helloworld.py  helloworld.spec
$ ls -l dist/helloworld 
-rwxr-xr-x 1 hironobu hironobu 7662576 Dec 12 05:51 dist/helloworld
$ file dist/helloworld 
dist/helloworld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=f6af5bc244c001328c174a6abf855d682aa7401b, for GNU/Linux 2.6.32, stripped
$ ./dist/helloworld 
Hello World

UNIX系の環境上で実行ファイルとして動かしたいときはハッシュバング(シバンとも呼ぶ)を使って実行ファイル化することが出来ます。

$ cat ./helloworld
#!/usr/bin/python 
print("Hello World")
$ ./helloworld 
Hello World

トップページ