python3とpython2.7の違い

Nov 23, 2016 am 09:10 AM
python

検索すると、Python には Python2 と Python3 という 2 つの主要なバージョンがあることがわかりますが、Python は他の言語とは異なり、下位互換性があり、Python3 には下位互換性がありませんが、ほとんどのコンポーネントと拡張機能は Python2 に基づいています。 python2とpython3の違いをまとめてみましょう。

1. パフォーマンス

Py3.0 は pystone ベンチマークを Py2.5 よりも 30% 遅く実行します。 Guido 氏は、Py3.0 には最適化の余地が大きく、文字列演算と整数演算で良好な最適化結果を達成できると考えています。

Py3.1 のパフォーマンスは Py2.5 より 15% 遅く、まだ改善の余地がたくさんあります。

2. エンコーディング

Py3. (中国)

china

3. 文法

1) <> を削除し、!= を使用します

2) ``を削除し、すべてで repr() を使用します

3 ) キーワード as と with、および True、False、None を追加します

4) 整数の除算は浮動小数点数を返します。整数の結果を取得するには、// を使用してください

5) 非ローカル ステートメントを追加します。 noclocal x を使用して周辺 (非グローバル) 変数を直接割り当てます

6) print ステートメントを削除し、同じ機能を実現するために print() 関数を追加します。同じことが exec ステートメントにも当てはまり、 exec() 関数に変更されました

例:

2.X: print "答えは", 2*2

3.X: print("The答えは", 2* 2)

2.

2. 3.

2.

7) 変更 x と y の型が一致しない場合、x

8) input 関数が変更され、raw_input が削除され、input に置き換えられました:

2 .X:guess = int(raw_input('Enter an integer : ')) # How toキーボード入力を読み取ります

3.X:guess = int(input('整数を入力してください : '))

9) タプルパラメータのアンパックを削除します。この関数は def(a, (b, c)):pass のように定義することはできません

10) 新しい 8 進ワード変数である oct() 関数はそれに応じて変更されました。

2.

3.X は次のようになります:

>> ;> 0666

SyntaxError: 無効なトークン (、行 1)

>>> 438

; oct(438)

'0o666'

11) バイナリリテラルと bin() 関数を追加しました

>>> bin(438) '0b110110110'

>>> _438 = '0b110110110'

> >> _438

'0b110110110'

12) 拡張された反復可能なアンパック。 Py3で。 U13) 新しい super () は super () のパラメータを渡すことができなくなりました、

& gt & gt & gt; class c (object):

def __init __ (seld, a):

('c (' c ('c (' c ('c ', a)

>>> class D(C):

def __init(self, a):

. Super () .__ init __ (A) # パラメーターなしで super () を呼び出します

& lt; 14) 構文:

class Foo(*bases, **kwds):

pass

15) はクラス デコレータをサポートします。使用法は関数デコレータと同じです:_a.print = print_func C().print()

こんにちは、世界!

クラスのデコレーターは、王子と交換するためのジャコウネコのトリックをプレイするために使用できます。詳細については、PEP 3129

4 を参照してください。 文字列とバイト文字列

1) 現在、文字列のタイプは str のみですが、これは Unicode の 2.x バージョンとほぼ同じです。

2) バイト文字列については、「データ型」の 2 番目の項目を参照してください。

5. データ型

1) Py3.X では、long 型が削除され、整数型は int 1 つだけになりました。ただし、バージョン 2.X では long のように動作します

2) バージョン 2 の 8 ビット文字列に対応する、新しいバイト型が追加されました。 = b'china'

>>>

Str オブジェクトと bytes オブジェクトは、.encode() (str -> bytes) または .decode() (bytes -> str) メソッドの相互変換を使用できます。

>>> s = b.decode()

>>> s

b'china'

3) dict の .keys() items および .values() メソッドはイテレータを返しますが、以前の iterkeys() およびその他の関数は放棄されました。

dict.has_key() も削除され、

6 で置き換えられます。1) 抽象基本クラス (抽象基本クラス、ABC) を導入します。

2) コンテナクラスとイテレータクラスはABCなので、cellectionsモジュールにはPy2.5よりもはるかに多くの型があります。

>>> コレクションのインポート

>>> print('n'.join(dir(collections)))

呼び出し可能

コンテナ

ItemsView

Iterable

イテレーター

KeysView

MappingView

MutableMapping

MutableSequence

MutableSet

NamedTuple

Sequence

Set

Sized

ValuesView

__all__

__builtins__

__doc__

__file__

__

_abcoll

_itemgetter

_sys

defaultdict

deque

さらに、数値型も ABC サイズです。これら 2 つの点については、PEP 3119 および PEP 3141 を参照してください。

3) イテレータの next() メソッドの名前が __next__() に変更され、イテレータの __next__() メソッドを呼び出すための組み込み関数 next() が追加されました

4) 2 つの @abstractmethod と @abstractproperty が追加されましたデコレータを使用する場合は、抽象メソッド (プロパティ) を記述する方が便利です。

7. 例外

1) すべての例外は BaseException から継承され、StardardError は削除されます

2) 例外クラスのシーケンス動作と .message 属性が削除されます

3) raise の代わりに raise Exception(args) を使用します例外、引数の文法

4) 例外をキャッチするための構文の変更。Py2.5 では、例外インスタンスを識別するために as キーワードが導入されました:

>>> try:

... raise NotImplementedError('Error' )

... NotImplementedError を除く、エラー:

... error.message を出力します

...

Py3.0 のエラー

>>> 試してください:

raise NotImplementedError('Error')

エラーとして NotImplementedError を除く: #注意这个as

print(str(error))

エラー

5) __context__ 在 3.0a1 バージョン本中没有实现

8. モジュールの変更点

1) cPickle モジュールが削除され、pickle モジュールに置き換えることができます。最終的には、透過的で効率的なモジュールが完成するでしょう。

2) imageop モジュールを削除

3) audiodev、Bastion、bsddb185、例外、linuxaudiodev、md5、MimeWriter、mimify、popen2、

rexec、sets、sha、stringold、strop、sunaudiodev、timing および xmllib モジュールを削除

4) bsddb モジュールを削除しました (個別にリリースされ、http://www.jcea.es/programacion/pybsddb.htm から入手可能)

5) 新しいモジュールを削除しました

6) os.tmpnam () および os.tmpfile( ) 関数は tmpfile モジュールに移動されました

7) tokenize モジュールはバイトで動作するようになりました。メインのエントリ ポイントは、generate_tokens ではなくなり、tokenize.tokenize()

9. その他

1) range() を使用してリストを取得したい場合は、呼び出す必要があります。明示的に:

>>> list(range(10))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2) バイトオブジェクトはハッシュできません。 b . lower()、b.strip()、b.split() メソッドもサポートしていませんが、後者の 2 つは b.strip(b'

ntr f') と b.split(b' ') 同じ目的を達成するため

3) zip()、map()、filter() はすべてイテレータを返します。 apply()、callable()、coerce()、execfile()、reduce() および reload

() 関数は削除されました

今では、 hasattr() を使用して callable() hasattr() を置き換えることができます。構文は次のとおりです: hasattr(string, '__name__')

4) string.letters および関連する . lowercase と .uppercase は削除されます。代わりに string.ascii_letters を使用してください。

5) If x < y比較できません。TypeError 例外がスローされます。バージョン 2.x は擬似ランダムのブール値を返します

6) __getslice__ シリーズのメンバーは廃止されました。 a[i:j] は a.__getitem__(slice(I, j)) または __setitem__ に変換され、コンテキストに従って

__delitem__ が呼び出されます

7) ファイル クラスは Py2.5 では非推奨です:

> ;&gt;&lt 'file'&gt;

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語合計の機能は何ですか? C言語合計の機能は何ですか? Apr 03, 2025 pm 02:21 PM

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

独特の目標は関連していますか? 独特の目標は関連していますか? Apr 03, 2025 pm 10:30 PM

明確で明確なものは区別に関連していますが、それらは異なる方法で使用されます。明確な(形容詞)は、物事自体の独自性を説明し、物事の違いを強調するために使用されます。明確な(動詞)は、区別の動作または能力を表し、差別プロセスを説明するために使用されます。プログラミングでは、個別は、重複排除操作などのコレクション内の要素の独自性を表すためによく使用されます。明確なは、奇数や偶数の偶数を区別するなど、アルゴリズムまたは関数の設計に反映されます。最適化する場合、異なる操作は適切なアルゴリズムとデータ構造を選択する必要がありますが、異なる操作は、論理効率の区別を最適化し、明確で読み取り可能なコードの書き込みに注意を払う必要があります。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

Cで理解する方法!x? Cで理解する方法!x? Apr 03, 2025 pm 02:33 PM

!X理解!Xは、C言語の論理的な非操作者です。 Xの値をブーリングします。つまり、虚偽の真の変化、trueへの誤った変更です。ただし、Cの真実と虚偽はブール型ではなく数値で表されていることに注意してください。非ゼロは真であると見なされ、0のみが偽と見なされます。したがって、!xは正の数と同じ負の数を扱い、真実と見なされます。

c言語でsumとはどういう意味ですか? c言語でsumとはどういう意味ですか? Apr 03, 2025 pm 02:36 PM

Cには組み込みの合計関数はありませんが、次のように実装できます。ループを使用して要素を1つずつ蓄積します。ポインターを使用して、要素に1つずつアクセスして蓄積します。大量のデータ量については、並列計算を検討してください。

H5ページの生産には継続的なメンテナンスが必要ですか? H5ページの生産には継続的なメンテナンスが必要ですか? Apr 05, 2025 pm 11:27 PM

H5ページは、コードの脆弱性、ブラウザー互換性、パフォーマンスの最適化、セキュリティの更新、ユーザーエクスペリエンスの改善などの要因のため、継続的に維持する必要があります。効果的なメンテナンス方法には、完全なテストシステムの確立、バージョン制御ツールの使用、定期的にページのパフォーマンスの監視、ユーザーフィードバックの収集、メンテナンス計画の策定が含まれます。

ラブコードのコピーをコピーして貼り付けて無料でラブコードを貼り付けます ラブコードのコピーをコピーして貼り付けて無料でラブコードを貼り付けます Apr 04, 2025 am 06:48 AM

コードのコピーと貼り付けは不可能ではありませんが、注意して扱う必要があります。コード内の環境、ライブラリ、バージョンなどの依存関係は、現在のプロジェクトと一致しないため、エラーや予測不可能な結果が得られます。ファイルパス、従属ライブラリ、Pythonバージョンなど、コンテキストが一貫していることを確認してください。さらに、特定のライブラリのコードをコピーして貼り付けるときは、ライブラリとその依存関係をインストールする必要がある場合があります。一般的なエラーには、パスエラー、バージョンの競合、一貫性のないコードスタイルが含まれます。パフォーマンスの最適化は、コードの元の目的と制約に従って再設計またはリファクタリングする必要があります。コピーされたコードを理解してデバッグすることが重要であり、盲目的にコピーして貼り付けないでください。

58.com作業ページでリアルタイムアプリケーションと視聴者のデータを取得する方法は? 58.com作業ページでリアルタイムアプリケーションと視聴者のデータを取得する方法は? Apr 05, 2025 am 08:06 AM

クロール中に58.com作業ページの動的データを取得するにはどうすればよいですか? Crawlerツールを使用して58.comの作業ページをrawったら、これに遭遇する可能性があります...

See all articles