Python組み込み関数活用術:print, len, type
print() 関数:出力の多彩な表現
print() 関数は、Pythonにおける最も基本的で頻繁に使用される組み込み関数の一つです。その主な役割は、指定されたオブジェクト(文字列、数値、リストなど)を標準出力(通常はコンソール)に表示することです。しかし、その機能は単なる表示に留まらず、出力形式の調整や複数のオブジェクトの同時出力など、様々な活用法があります。
基本の活用
print() の最も基本的な使い方は、引数として渡されたオブジェクトをそのまま表示することです。
print(“Hello, world!”)
print(123)
print([1, 2, 3])
複数のオブジェクトの出力
print() 関数は、複数の引数を受け取ることができます。この場合、各引数はデフォルトでスペース区切りで表示されます。
name = “Alice”
age = 30
print(“名前:”, name, “年齢:”, age)
出力結果:
名前: Alice 年齢: 30
区切り文字の変更 (sep引数)
複数のオブジェクトを出力する際に、デフォルトのスペース区切りではなく、任意の文字列を区切り文字として使用したい場合があります。その際には、sep 引数を使用します。
print(“apple”, “banana”, “cherry”, sep=”, “) # カンマとスペースで区切る
print(“2023”, “10”, “26”, sep=”-“) # ハイフンで区切る
出力結果:
apple, banana, cherry
2023-10-26
出力末尾の変更 (end引数)
print() 関数は、デフォルトで出力の最後に改行文字 (n) を追加します。しかし、end 引数を使用することで、この末尾の挙動を変更できます。例えば、改行せずに続けて出力したり、特定の文字列で終えたりすることが可能です。
print(“Hello”, end=” “) # 改行せずにスペースで終える
print(“World!”)
出力結果:
Hello World!
print(“Processing…”, end=””) # 何も追加しない
# ここで何らかの処理
print(“Done.”)
出力結果:
Processing…Done.
フォーマット済み文字列 (f-string) との連携
Python 3.6以降で導入されたf-string(フォーマット済み文字列リテラル)は、print() 関数との組み合わせで非常に強力な表現力を発揮します。変数の値を埋め込んだり、式を評価したりする際に、簡潔で読みやすいコードを書くことができます。
name = “Bob”
score = 85.5
print(f”生徒の名前は{name}で、スコアは{score:.1f}点です。”)
出力結果:
生徒の名前はBobで、スコアは85.5点です。
この例では、{score:.1f} のように、変数だけでなくフォーマット指定子(小数点以下1桁まで表示)も埋め込んでいます。
ファイルへの出力
print() 関数は、file 引数を使用することで、標準出力だけでなく、指定したファイルオブジェクトにも出力をリダイレクトできます。
with open(“output.txt”, “w”) as f:
print(“これはファイルに書き込まれるテキストです。”, file=f)
print(“これも同じファイルに書き込まれます。”, file=f)
これにより、output.txt というファイルが作成され、指定した内容が書き込まれます。
len() 関数:コレクションのサイズを知る
len() 関数は、シーケンス(文字列、リスト、タプルなど)やコレクション(辞書、セットなど)の要素数、つまり「長さ」を返す組み込み関数です。データ構造のサイズを把握するために不可欠な機能です。
文字列の長さ
文字列のlen() は、その文字列に含まれる文字数を返します。
message = “Python is fun!”
print(len(message))
出力結果:
14
リストの要素数
リストのlen() は、リストに含まれる要素の数を返します。
my_list = [10, 20, 30, 40, 50]
print(len(my_list))
出力結果:
5
タプルの要素数
タプルのlen() も、タプルに含まれる要素の数を返します。
my_tuple = (“a”, “b”, “c”)
print(len(my_tuple))
出力結果:
3
辞書のキーの数
辞書の場合、len() は辞書に含まれるキーの数を返します。
my_dict = {“name”: “Charlie”, “age”: 25, “city”: “Tokyo”}
print(len(my_dict))
出力結果:
3
セットの要素数
セットの場合、len() はセットに含まれるユニークな要素の数を返します。
my_set = {1, 2, 2, 3, 4, 4, 4}
print(len(my_set))
出力結果:
4
空のコレクション
空の文字列、リスト、タプル、辞書、セットのlen() はすべて0を返します。
empty_string = “”
empty_list = []
empty_dict = {}
print(len(empty_string))
print(len(empty_list))
print(len(empty_dict))
出力結果:
0
0
0
type() 関数:オブジェクトの型を特定する
type() 関数は、与えられたオブジェクトの型(クラス)を返します。プログラムの実行中に、変数がどのような種類のデータを持っているかを確認したり、型に基づいた処理を分岐させたりする際に非常に役立ちます。
基本的な型の確認
様々な基本的なデータ型のオブジェクトに対してtype() を適用してみましょう。
print(type(“Hello”)) # 文字列型
print(type(100)) # 整数型
print(type(3.14)) # 浮動小数点型
print(type(True)) # ブール型
print(type([1, 2, 3])) # リスト型
print(type((1, 2, 3))) # タプル型
print(type({“a”: 1})) # 辞書型
print(type({1, 2, 3})) # セット型
出力結果は、各オブジェクトの型を示すクラス名となります。例えば、<class 'str'>, <class 'int'> のようになります。
カスタムクラスのインスタンス
ユーザー定義のクラスのインスタンスに対してもtype() は正しく機能します。
class MyClass:
pass
obj = MyClass()
print(type(obj))
出力結果:
<class ‘__main__.MyClass’>
型チェックによる処理の分岐
type() 関数は、isinstance() 関数と組み合わせて、型に基づいた条件分岐を行う際によく使用されます。ただし、一般的にはisinstance() の方が、継承関係も考慮されるため、より推奨される型チェックの方法です。
def process_data(data):
if type(data) is int:
print(“整数データです。2倍して:”, data * 2)
elif type(data) is str:
print(“文字列データです。大文字にして:”, data.upper())
else:
print(“その他のデータ型です:”, data)
process_data(10)
process_data(“python”)
process_data([1, 2])
出力結果:
整数データです。2倍して: 20
文字列データです。大文字にして: PYTHON
その他のデータ型です: [1, 2]
`isinstance()` との比較
isinstance(object, classinfo) は、object が classinfo のインスタンス、または classinfo のサブクラスのインスタンスである場合に True を返します。
class Parent:
pass
class Child(Parent):
pass
child_instance = Child()
print(type(child_instance) is Child) # True
print(type(child_instance) is Parent) # False (型はChildなのでParentとは一致しない)
print(isinstance(child_instance, Child)) # True
print(isinstance(child_instance, Parent)) # True (子クラスは親クラスのインスタンスでもあるとみなされる)
このように、isinstance() は継承関係を考慮するため、より柔軟な型チェックが可能です。
まとめ
Pythonの組み込み関数 print(), len(), type() は、Pythonプログラミングの基礎でありながら、その活用範囲は広範にわたります。print() は単なる出力にとどまらず、sep や end 引数、f-stringとの連携により、表現力豊かな出力制御を可能にします。len() は、様々なデータ構造のサイズを瞬時に把握するための必須ツールであり、プログラムのロジック構築において重要な役割を果たします。そして type() は、オブジェクトの性質を理解し、型に基づいた適切な処理を行うための基盤を提供します。これらの関数を理解し、効果的に活用することで、より効率的で、可読性の高いPythonコードを作成することができるでしょう。
