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の違いを意識することなく、同じコードでユーザー入力を処理することができます。
まとめ
Python
2のraw_input()
は、Python
3ではinput()
に置き換えられました。Python
3のinput()
は、常に文字列を返し、Python
2のraw_input()
と同じ動作をします。- 互換性を持たせるには、
try-except
構文やsix
モジュールを活用する方法が便利です。Python
2から3への移行は、このraw_input()
とinput()
の違いを理解することで、スムーズに行えます。