Python Tips (ヒント集)
Pythonは、作業を迅速化しシステムを効果的に統合できるプログラミング言語です。 Pythonは AI分野で最も人気のあるプログラミング言語の一つです。いくつかの Pythonに関するヒントを紹介します。
ヒント |
答え |
| Python スクリプトの実行 | ほとんどのUNIXシステムでは、コマンドラインから Pythonスクリプトを実行できます。
$ python my_pyprog.py |
| Python インタプリタを利用した Pythonプログラムの実行 | ほとんどの Pythonのコマンドを試すことができます。コマンドプロンプト(>>>)で各コマンドを一つずつ入力すると即座に結果が返されます。
$ python Python 3.10.6 (...) [Clang 13.0.0] on darwin Type "help","copyright","credits" or ... more information. >>> <ここにコマンドを入力> |
| 動的型付け | Java、C++などの静的型付け言語では、関数の戻り値と各引数のデータ型を明示的に指定する必要があります。 しかし、Pythonは動的型付け言語です。Pythonでは使用するもののデータ型を明示的に指定する必要は一切ありません。 割り当てた値に基づいて、内部で自動的にデータ型を追跡します。 |
| Python のステートメント(文) | Pythonは改行で文を区切り、コロンとインデントによりコードブロックを区切ります。 CやC++などのコンパイル型言語の多くは、文を区切るのにセミコロン、コードブロックを区切るのに中括弧を使用します。 |
| Python のコメント | 各行の『#』以降はコメントとして扱われます。
# Set border border = x + 10 # Make offset of 10px |
| == と = | Pythonでは、比較に『==』を、代入に『=』を使用します。 Pythonは、インライン代入をサポートしていないため、比較したい値を誤って代入してしまう可能性はありません。 |
| 文字列の連結 | 文字列を連結するには『+』を使用できます。
>>> str = 'gad' + 'gety' >>> print(str) gadgety |
| __init__ メソッド(初期化関数) | __init__メソッドは、クラスのオブジェクトがインスタンス化されるとすぐに実行されます。このメソッドは、オブジェクトに対して初期化処理を行うのに便利です。
__init__メソッドは、C++、Java、C#におけるコンストラクタに相当します。
--- init_method.py ---
class Person:
def __init__(self, name):
self.name = name
def sayHello(self):
print('Hi, my name is', self.name)
p = Person('Gadgety')
p.sayHello()
----------------------
$ python init_method.py
Hi, my name is Gadgety
|
| モジュール | 大きなプログラムを管理しやすくするため、複数のファイルに分けます。
Pythonでは、複数の関数定義を1つのファイルに記述し、インポート可能なモジュールとして管理します。
そして、これらのファイルは必ず.py拡張子を持つ必要があります。『import』文を利用してモジュールを取り込みます。
--- my_function.py ---
def minmax(a,b):
if a <= b:
min, max = a, b
else:
min, max = b, a
return min, max
----------------------
import my_function |
| モジュール内で定義されているものを調べる | 組み込み関数『dir()』は、モジュールで何が定義されていルカを調べます。ソートされた文字列のリストとして返します。
>>> import time >>> dir(time) ['CLOCK_BOOTTIME', 'CLOCK_MONOTONIC', ... '__doc__', '__loader__', '__name__', '__package__', 'altzone', 'asctime', ... 'timezone', 'tzname', 'tzset'] |
| モジュールのドキュメント | モジュール内にドキュメントが記述されている場合、__doc__ を参照することで確認できます。
>>> import time >>> print(time.mktime.__doc__) mktime(tuple) -> floating-point number |
| Pythonスクリプトで指定された引数の渡し方 | Pythonでは、スクリプトに渡した引数(コマンドラインの内容)は sys.argvリストに格納されます。
import sys print(sys.argv) |
| 起動時にモジュールまたはコマンドを読み込む | 環境変数『$PYTHONSTARTUP』を利用することで、Pythonスクリプトの起動時に、事前定義されたモジュールやコマンドをロードすることができます。 環境変数『$PYTHONSTARTUP』をファイルに設定することで、必要なモジュールやコマンドをロードする指示を環境に応じて変更できます。 |
| 文字列を日付オブジェクトに変換 | 『DateTime』関数を利用すことで、文字列を日付オブジェクトに変換できます。
from datetime import datetime as dt dtstr = '2020-12-25 21:52:16' dtobj = dt.strptime(dtstr, '%Y-%m-%d %H:%M:%S') |
| 文字列リストを文字列に変換 | リストを文字列に変換するには、以下の方法があります。
>>> mylist = ['bread', 'ham', 'egg', 'lettuce'] >>> (', '.join(mylist)) bread, ham, egg, lettuce |
| Pythonインタプリタ終了時に関数を実行 | 『atexit』モジュールを利用すると、Pythonインタプリタの終了時に関数を実行できます。
以下のプログラムで最後の行が実行されていないことがわかります。
--- my_prog.py ---
def goodbye(name):
print('Goodbye', name)
import atexit
atexit.register(goodbye, 'hanako')
print('start')
print('end')
----------------------
$ python my_prog.py
start
end
Goodbye hanako |
| 整数から2進数(バイナリー)への変換など | Pythonでは、bin()、hex()、oct() 関数を利用し、それぞれ整数を2進数、16進数、8進数形式に変換します。
>>> bin(25) 0b11001 >>> hex(25) 0x19 >>> oct(25) 0o31 |
| システムプラットフォームの検出 | プラットフォーム固有の機能を実行するために、現在実行中のプラットフォームを『sys.platform』を利用して検出します。
>>> import sys >>> print(sys.platform) darwin |
| 小数(分数)の表現 | 以下のコンストラクタを使用して分数インスタンスを作成できます。
Fraction([numerator[,denominator]]) |
| 算術演算の実行 | 『math』モジュールは数多くの算術関数を提供します。複素数を除く整数および浮動小数点数に対して動作します。
複素数については、『cmath』 と呼ばれる別のモジュールを利用します。
非常に大きな浮動小数点数を扱いたい場合、精度に気をつけてください。
math.floor(x) math.cos(x) |
| 配列 | 『array』モジュールは、プログラム内で配列を効率的に使用する方法を提供します。
array(typecode[,initializer])typecodeは、配列の要素のデータ型を表すコード文字。 また、配列オブジェクトを作成したら(たとえば myarray)、それに対して一連のメソッドを利用できます。 myarray.append(x) # 値x を末尾に追加 myarray.count(x) # 要素x の出現回数 myarray.pop([i]) # インデクス i の要素を取り除いて返す など |
| 正規表現の利用 | 『re』モジュールは、正規表現ベースの検索、分割や置換などが行えます。
import re
str = "Hello, World."
if re.search("[A-Z]", str):
print("Found!") |
| ワイルドカードを利用したファイル検索 | 『glob』モジュールを利用して、パターンに一致するすべてのパス名を見つけることができます。
ファイル名に「*」や「?」などのワイルドカードを用いて柔軟にファイル検索ができます。
>>> import glob >>> glob.glob('*.jpg') ['fig1.jpg', 'fig2.jpg', 'face.jpg'] |
| 基本的なファイル操作 | 『shutil』モジュールを利用すると、基本的なファイル操作を実行できます。
このモジュールは通常のファイルが対象のため、名前付きパイプやブロックデバイスなどの特殊ファイルでは動作しません。
shutil.copy(src, dst) # ファイル(src) を dstにコピー shutil.move(src, dst) # ファイルやディレクトリ(src) を dstに移動 など |
| UNIXコマンドの実行 | 『subprocess』モジュールを利用してUNIXコマンドを実行できます。Python 2では『commands』モジュール。
標準出力を取得するには以下のようにする。
import subprocess
cp = subprocess.run(['ls', '-1'], encoding='utf-8',
stdout=subprocess.PIPE)
print("[file names]: \n", cp.stdout)
----------------------
[file names]:
main.py |
| 環境変数の読み取り | 『os』モジュールを利用して、OSの環境変数の内容を取得できます。
>>> import os >>> print(os.environ['HOME']) /home/user01 |
| CSV ファイルの扱い | 『csv』モジュールを利用すれば、CSVファイルの読み書きが可能です。 詳細は、「CSV ファイルの読み書き」を参照してください。 |
| サードパーティ製モジュールのインストール | Pythonには、多くの人たちが作った便利なモジュールがあります。 それらを利用したいなら、「Python モジュールのインストール」を参照してください。 |









