Python 2では、ユーザーからの入力を文字列として取得するためにraw_input()関数が使われていました。しかし、Python 3ではこの関数が削除され、代わりにinput()がその役割を担っています。Python 2のinput()は、ユーザーの入力を式として評価するというセキュリティ上のリスクがありましたが、Python 3ではこの問題を解決するために動作が変更されました。
Python 3でのraw_inputの扱い
Python 3では、raw_input()関数は存在せず、input()が同じように動作します。すなわち、ユーザーの入力を常に文字列として返します。これにより、以前のPython 2でのraw_input()の機能がそのままPython 3に引き継がれています。もし、整数や他の型が必要な場合は、明示的に型変換を行う必要があります。
例:
user_input = input("名前を入力してください: ")
print("こんにちは、" + user_input)
このコードは、ユーザーの入力をそのまま文字列として受け取ります。もし数値が必要であれば、int()などを用いて型変換を行います。
互換性を持たせる方法
Python 2と3の両方で動作するコードを書く場合、以下のようにtry-except構文を使用してraw_inputを定義することで対応できます。
try:
input = raw_input # Python 2の場合
except NameError:
pass # Python 3ではinputが既に定義されているためスキップ
user_input = input("何か入力してください: ")
print("入力内容: " + user_input)
この方法では、Python 2のraw_input()とPython 3のinput()の動作を同一にし、どちらのバージョンでも動作するようにできます。
sixモジュールを使用した方法
Python 2と3の互換性を保つために、sixというモジュールを利用することも可能です。sixは、Python 2/3の両方で使える共通コードを書くためのライブラリです。
from six.moves import input
user_input = input("入力してください: ")
print("入力された文字: " + user_input)
このコードにより、Python 2と3の違いを意識することなく、同じコードでユーザー入力を処理することができます。
まとめ
Python2のraw_input()は、Python3ではinput()に置き換えられました。Python3のinput()は、常に文字列を返し、Python2のraw_input()と同じ動作をします。- 互換性を持たせるには、
try-except構文やsixモジュールを活用する方法が便利です。Python2から3への移行は、このraw_input()とinput()の違いを理解することで、スムーズに行えます。