Python2.xとPython3.xの違いは?
コーディングコミュニティでは、Python2.xまたはPython3.xのどちらのPythonバージョンを学ぶのが最適かについて常に議論があります。
以下は、pyton2.xとpython3.xの主な違いです
1。印刷機能
python 2.xでは、「print」はステートメントとして扱われ、python3.xは明示的に「print」を関数として扱います。これは、印刷内の項目を標準的な方法で関数の括弧に渡す必要があることを意味します。そうしないと、構文エラーが発生します。
#Python 2.7 print 'Python', python_version() print 'Hello, World!' print('Hello, World!') print "text", ; print 'some more text here'
出力
Python 2.7.6 Hello, World! Hello, World! text print some more text here Python 3 import sys print("Python version is %s.%s.%s" %sys.version_info[:3]) print('Hello, World!') print("some text,", end="") print('some more text here')
出力
Python version is 3.6.1 Hello, World! some text,some more text here >>> print "Hello" Syntax Error: Missing parentheses in call to 'print'
2。整数除算
Python 2は、小数点以下の数字なしで入力した数値を整数として扱います。これにより、除算中に予期しない結果が生じる可能性があります。たとえば、Python 2コードで式3/2を入力すると、評価の結果は1になりますが、予想どおり1.5ではありません。 Python 3コードでxのみを使用する代わりにfloat(x)を使用するか(Python 2へのコードベースポートの場合)、Python2スクリプトで__future__インポート除算を使用することをお勧めします。
#Python 2
print 'Python', python_version() print '3 / 2 =', 3 / 2 print '3 // 2 =', 3 // 2 print '3 / 2.0 =', 3 / 2.0 print '3 // 2.0 =', 3 // 2.0
出力
Python 2.7.6 3 / 2 = 1 3 // 2 = 1 3 / 2.0 = 1.5 3 // 2.0 = 1.0
#Python 3.6.1
import sys print('Python %s.%s.%s' %sys.version_info[:3]) print('3 / 2 =', 3 / 2) print('3 // 2 =', 3 // 2) print('3 / 2.0 =', 3 / 2.0) print('3 // 2.0 =', 3 // 2.0)
出力
Python 3.6.1 3 / 2 = 1.5 3 // 2 = 1 3 / 2.0 = 1.5 3 // 2.0 = 1.0
3。 Unicode文字列
デフォルトでは、Python 3は文字列をUnicodeとして保存しますが、Python 2では、文字列をUnicodeとして保存する場合は、文字列に「u」のマークを付ける必要があります。 Unicode文字列は、Python 2のデフォルトであるASCII文字列よりも用途が広く、絵文字や標準のローマ数字や数字だけでなく、外国語からの文字も保存できます。
#Python 2
>>> print type(unicode('this is like a python3 str type')) <type 'unicode'> >>> print type(b'byte type does not exist') <type 'str'> >>> print 'they are really' + b' the same' they are really the same
#Python 3
import sys print('Python %s.%s.%s' %sys.version_info[:3]) print('strings are now utf-8 \u03BCnico\u0394é!') print('Python %s.%s.%s' %sys.version_info[:3], end="") print(' has', type(b' bytes for storing data')) print('Python %s.%s.%s' %sys.version_info[:3], end="") print(' also has', type(bytearray(b'bytearrays')))
出力
Python 3.6.1 strings are now utf-8 μnicoΔé! Python 3.6.1 has <class 'bytes'> Python 3.6.1 also has <class 'bytearray'>があります
「文字列」+b「バイトのデータ」はエラーになります。
>>> print ('they are really' + b' the same') Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> print ('they are really' + b' the same') TypeError: must be str, not bytes
4。例外の発生
Python 3では、例外を発生させるために異なる構文が必要です。ユーザーにエラーメッセージを出力する場合は、構文-
を使用する必要があります。raise IOError(“your error message”)
上記の構文は、Python2とPython3の両方で機能します。
ただし、次のコードはpython 2でのみ機能し、python3では機能しません
raise IOError, “your error message”
5。リスト内包ループ変数
Python 2では、「forループ」で繰り返される変数にグローバル変数と同じ名前を付けると、グローバル変数の値が変更される可能性があります。これは通常、望ましくありません。この問題はPython3で修正されているため、「forループ」で制御変数にすでに使用している変数名を、コードの残りの部分で変数の値が漏れたり混乱したりすることを心配せずに使用できます。
#Python 2 print 'Python', python_version() i = 1 print 'before: i =', i print 'comprehension: ', [i for i in range(5)] print 'after: i =', i
出力
Python 2.7.6 before: i = 1 comprehension: [0, 1, 2, 3, 4] after: i = 4
#Python 3
import sys print('Python %s.%s.%s' %sys.version_info[:3]) i = 1 print('before: i =', i) print('comprehension:', [i for i in range(5)]) print('after: i =', i)
出力
Python 3.6.1 before: i = 1 comprehension: [0, 1, 2, 3, 4] after: i = 1
-
WindowsXPとWindows7の違いトップ10
他の多くの人がそうであるようにWindowsVistaをスキップした場合、WindowsXPからWindows7にアップグレードするときにショックを受ける可能性があります。Microsoftの最新のオペレーティングシステムは、以前のバージョンのWindowsからの使いやすさ、利便性、および全体的なコンピューティングの大きな変化です。 。 すべてが驚異的な変更であるわけではありませんが、WindowsXPとWindows7の違いのトップ10を以下に示します。これらの変更の多くは、XPでの動作に慣れているため、大きな問題のように思われるかもしれません。 XPからWindows7へのアップグレード
-
Python2.7.xとPython3.xの主な違いは何ですか?
Python 3.0は2008年12月にリリースされました。これは、以前のバージョンの特定の欠陥を修正するために設計されました。 Python 3の基本原則は、「古いやり方を削除することで機能の重複を減らす」ことでした。 Python3.0は下位互換性を提供しません。つまり、バージョン2.x構文を使用して記述されたPythonプログラムは、python3.xインタープリターでは実行されません。 Ver 2.7は、Python2.xシリーズの最後のメジャーリリースです。 これら2つのバージョンの使用法にはかなりの違いがありますが、最も明白なものを以下に示します- 印刷 はPython2.7の