Python 2と3の主な違い:変更をナビゲートする方法
このチュートリアルでは、以下のトピックを取り上げます。
- 式
- 印刷オプション
- 不等号演算
- 範囲
- 自動移行
- パフォーマンスの問題
- いくつかの主要なハウスキーピングの変更
- 問題がありますか?
式
式は、数字や文字列、クラスのインスタンスなど、何かを表します。 すべての値は式です。 何かを実行するものはすべてステートメントです。 変数への代入や関数の呼び出しはすべてステートメントです。 そのステートメントに含まれるすべての値は、式です。
Python 2で評価された式を取得するには、次のように入力します:
X = raw_input ("enter some values)
しかし、Python 3では、次のように入力する必要があります:
X = input ("enter some values")
つまり、値として入力したものは、2と3の両方で変数xに割り当てられます。
しかしながら、この同じプログラムをPython3で実行すると、結果は文字列になります。
では、どうすれば評価された式を得ることができるでしょうか。 ここでは、evalという式または関数を使用します。入力の前にevalを記述すると、式が評価された値になります。
x= eval(input("enter some values")) = 12
詳細な式の例:
Python2では以下のようになります。
name = input("What is your name? ")print ("Hello, %s." %name)
そして、出力:
Python 3では以下のようになります。
name = input("What is your name? ")print ("Hello, %s." %name)
そして出力:
はっきりとわかるように、この2つにはほとんど違いがありません。
あわせて読みたい。 プログラミング言語「Python」の紹介
Guido van Rossum氏がPythonを開発したとき、彼は他のシステムの脆弱性を回避する「シンプルな」プログラミング言語を作りたいと考えていました。 シンプルな構文と洗練された構文表現により、この言語は機械学習などの様々な科学的アプリケーションの標準となっています。
Printオプション
Python 2では、printは括弧を必要としない文です。 Python 3では、printは関数であり、値を括弧内に記述する必要があります。
Python 2
入力:
print "hello world"
出力:
Python 3
入力です。
1 != 1.0print (False)
Output:
不等号演算
3つ目の違いに移りましょう。 Python 2で不等号演算子を使うときは、great than >または less than <の記号を使う必要がありました。 しかし、Python3では一般的な演算子があります。
Python 2 – <> 演算子は等しくない場合に使われます
Python 3 – ! 演算子は等しくないときに使われます
Python 2
入力:
1 <> 1.0print "False"
出力。
Python 3
Input:
1 != 1.0print (False)1 != 1.0print (False)
Output:
SEE ALSO: Glances。
範囲
さて、範囲に目を向けてみましょう。
ここでは、Xがレンジ10に等しいことがわかります。 変数Xを確認すると、リスト型が返ってきました。 これは、Python 2では、rangeがリストの型であることを意味しています。
さて、Python 3に移って、x equal to range 5と書いてみましょう。 この範囲5の値は、変数Xに割り当てられます。変数Xの型を確認すると、範囲オブジェクトそのものが返されます。 つまり、Python3ではrangeはrangeオブジェクトそのものなのです。
Python 2
Input:
print range(0,10,1)
Output:
Python 3
Input:
print(list(range(10)))
Output:
自動化された移行
では、Python 2から3にコードを移すために、移行スクリプトをどのように自動化すればよいのでしょうか。
ここでは、「Add 2 Numbers in python」のような簡単なプログラムでテストしてみましょう。
Python 2
Input:
n1 = 1n2 = 2add = float(n1) + float(n2)print 'sum of {0} and {1} is {2}'.format(n1, n2, add)
Output:
さて、2から3への移行を使用して、上記のコードを変換することができます。
Input:
n1 = 1n2 = 2add = float(n1) + float(n2)print('sum of {0} and {1} is {2}'.format(n1, n2, add))
Output:
このように、2 to 3を使ってコマンドラインでPython 3のコードに変換できることがわかります。 2to3.py は、Python 2 のコードを Python 3 に変換するためのスクリプト群を実行します。完全ではありませんが、全体的に素晴らしい仕事をします。 コードを変換した後は、問題があれば手動で修正する必要があります。 さあ、ナギニ。 その Python コードを検証する必要があります
パフォーマンス
今回のアップグレードでは、ほとんどのパフォーマンスの問題が修正されました!
Some major housekeeping changes
Python 2
- print functional brackets optional.
- Prefix string with u to make unicode string.
- 整数の除算は常に整数を返します – 5/2=2。
- Raw_input () は文字列を読み込みます。
- input() は読み込んだデータを評価します。
- generator .next().
Python 3
- print 関数の括弧は必須です。
- 整数の除算は float になることがある – 5/2=2.5.
- Raw_input() が使えない
- 入力は常に文字列を読む
- Next (ジェネレータ)
- Py2 から py3 へのユーティリティ
- Dictionary .keys() と .values() はリストではなくビューを返す。
- 自然比較以外では比較演算子を使用できなくなりました。
- パーセント (%) 文字列フォーマット演算子は非推奨です。 Top 5 IDEs and code editors for Python
Having problems?
しばらくpython 2.xで作業していると、あちこちでエラーに遭遇するかもしれません。 それは大丈夫です。 問題をググってみてください。きっと誰かが移行時にその問題を抱えているはずです。