ノートパソコンのマルチバージョンpythonの構成
6915 ワード
ノートパソコンのマルチバージョンpythonの構成
私のノートには、pythonの2つのバージョンがインストールされています.
python2.7.11
python3.5.0b2
まずpython 3がインストールされているので、システムの環境構成にはpython 3が残っていますが、python 2はありません.ネットで設定方法を調べると、2つのステップに分けることができます.は、2つのバージョンpythonのパスを私のコンピュータ-プロパティ-高度-環境変数-pathに追加します. は、2つのバージョンのインストールディレクトリのpythonをそれぞれインストールする.exeをpython 2に変更する.exeとpython 3.exe.
これにより、後で呼び出し時に直接cmdで
1.性能
Py3.0 pystone benchmarkを実行する速度比Py 2.5は30%遅い.GuidoはPy 3とする.0は極めて大きな最適化空間があり,文字列と整形操作で良好な最適化結果を得ることができる.
Py3.1性能比Py 2.5は15%遅く、まだ大きなアップグレードスペースがあります.
2.コード化
Py3.Xソースファイルはutf-8符号化がデフォルトで使用され、以下のコードが合法的になります.
3.文法
1)<>を除去し、すべて改用!=
2)``を取り除き、全てrepr()に変更する
3)キーワードにasとwithを加え,True,False,Noneを加える.
4)整数除算で浮動小数点数を返し、整数結果を得るには//
5)nonlocal文を加えます.noclocal xを使用すると、周辺(非グローバル)変数を直接割り当てることができます.
6)print文を除去し,print()関数を加えて同じ機能を実現する.同様にexec文もあり、exec()関数に変更されました.たとえば、次のようになります.
7)順序オペレータの動作が変更され、例えばx
8)入力関数が変更され、raw_が削除されましたinput、inputで代用:
9)タプルパラメータを除去してパケットを解く.def(a,(b,c):passのように関数を定義できません
10)oct()関数を修正する新式の8進字変数.
2.Xの方式は以下の通りである.
0666 438 oct(438) '0666' 3.X:
0666 SyntaxError: invalid token (, line 1) 0o666 438 oct(438) '0o666'
11)2進数字面量とbin()関数を追加
12)拡張された反復可能な解包.Py 3.Xでは,a,b,*rest=seqと*rest,a=seqが合法であり,restがlistオブジェクトとseqが反復可能であることを2点だけ要求する.
13)新しいsuper()は、super()にパラメータを渡さなくてもよい.
14)新しいmetaclass構文:
15)class decoratorをサポートする.関数decoratorと同様に使用します.
class decoratorはタヌキを太子に変える大トリックに使うことができます.詳細については、PEP 3129を参照してください.
4.文字列とバイト列
1)文字列はstrの1種類しかありませんが、2.xバージョンのunicodeはほぼ同じです.
2)バイト列については、「データ型」の2番目の項目を参照してください.
5.データ型
1)Py3.Xはlongタイプを除いて、今は1つの整数型--intしかありませんが、その行為は2のようです.Xバージョンのlong
2)bytesタイプが追加され、2に対応する.Xバージョンの8ビット列で、bytesの字面量を定義する方法は以下の通りです.
strオブジェクトとbytesオブジェクトは使用できる.encode() (str -> bytes) or .decode()法(bytes->str)法は相互に変換される.
3)dictの.keys()、.itemsと.values()メソッドは反復器を返し,以前のiterkeys()などの関数は廃棄された.同時に取り除いたのはdict.has_ですkey()は、inで代用しましょう
6.オブジェクト向け
1)抽象ベースクラス(Abstraaact Base Classes,ABCs)を導入する.
2)容器類と反復器類はABCs化されているのでcellectionsモジュールのタイプはPy 2よりも大きい.5多すぎます.
また、数値タイプもABCs化されている.この点については、PEP 3119およびPEP 3141を参照してください.
3)反復器のnext()メソッドをnext()と改名し,反復器のnext()メソッドを呼び出すために内蔵関数next()を追加する
4)@abstractmethodと@abstractpropertyの2つのdecoratorを追加し,抽象メソッド(属性)を記述するのがより便利である.
7.異常
1)だから異常はすべてBaseExceptionから継承して、そしてStardardErrorを削除しました
2)異常類を除去するシーケンス挙動と.メッセージ属性
3)raise Exception,args構文の代わりにraise Exception(args)を用いる
4)例外の構文変更をキャプチャし,asキーワードを導入して例外インスタンスをPy 2で識別する.5:
Py 3.0:
5)contextは3.0 a 1バージョンで実装されていないため、異常チェーン
8.モジュール変動
1)cPickleモジュールを除去し,pickleモジュールで代用できる.最終的には、透明で効率的なモジュールがあります.
2)imageopモジュールを除去
3)audiodev,Bastion,bsddb 185,exceptions,linuxaudiodev,md 5,MimeWriter,mimify,popen 2,rexec,sets,sha,stringold,strop,sunaudiodev,timing,xmllibモジュールを除去
4)bsddbモジュールを除去した(単独で配布し、http://www.jcea.es/programacion/pybsddb.htm)
5)newモジュールを取り外した
6)os.tmpnam()とos.tmpfile()関数はtmpfileモジュールの下に移動されます
7)tokenizeモジュールはbytesを使用して動作します.主なエントリポイントはgenerateではありませんtokensではなくtokenize.tokenize()
9.その他
1)xrange()はrange()と名前を変更し、range()を使用してlistを取得するには、明示的に呼び出す必要があります.
2)bytesオブジェクトはhashではなく、b.lower()、b.strip()およびb.split()メソッドもサポートされていませんが、後者についてはb.strip(b’trf’)およびb.split(b’’’)を使用して同じ目的を達成できます.
3)zip()、map()、filter()は反復器を返します.apply()、callable()、coerce()、execfile()、reduce()およびreload()関数が除去する、callable()をhasattr()で置き換えることができるようになった.hasattr()の構文は、hasattr(string,'name')のようになります.
4)string.lettersは関連しています...uppercaseが除去されましたstringに変更してください.ascii_letters等
5)x6)getsliceシリーズメンバーは破棄される.a[i:j]コンテキストに従ってa.getitem(slice(I,j))またはsetitemおよびdelitem呼び出しに変換
7)file類は廃棄され、Py 2にある.5:
Py 3.X:
私のノートには、pythonの2つのバージョンがインストールされています.
python2.7.11
python3.5.0b2
まずpython 3がインストールされているので、システムの環境構成にはpython 3が残っていますが、python 2はありません.ネットで設定方法を調べると、2つのステップに分けることができます.
これにより、後で呼び出し時に直接cmdで
python2
またはpython3
を介して2つのバージョンを呼び出すことができ、以下に、いくつかの写したバージョンの違いを後日参照することができる.1.性能
Py3.0 pystone benchmarkを実行する速度比Py 2.5は30%遅い.GuidoはPy 3とする.0は極めて大きな最適化空間があり,文字列と整形操作で良好な最適化結果を得ることができる.
Py3.1性能比Py 2.5は15%遅く、まだ大きなアップグレードスペースがあります.
2.コード化
Py3.Xソースファイルはutf-8符号化がデフォルトで使用され、以下のコードが合法的になります.
>>> = 'china'
>>>print( )
china
3.文法
1)<>を除去し、すべて改用!=
2)``を取り除き、全てrepr()に変更する
3)キーワードにasとwithを加え,True,False,Noneを加える.
4)整数除算で浮動小数点数を返し、整数結果を得るには//
5)nonlocal文を加えます.noclocal xを使用すると、周辺(非グローバル)変数を直接割り当てることができます.
6)print文を除去し,print()関数を加えて同じ機能を実現する.同様にexec文もあり、exec()関数に変更されました.たとえば、次のようになります.
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x, #
3.X: print(x, end=" ") #
2.X: print #
3.X: print() #
2.X: print >>sys.stderr, "fatal error"
3.X: print("fatal error", file=sys.stderr)
2.X: print (x, y) # repr((x, y))
3.X: print((x, y)) # print(x, y)!
7)順序オペレータの動作が変更され、例えばx
8)入力関数が変更され、raw_が削除されましたinput、inputで代用:
2.X:guess = int(raw_input('Enter an integer : ')) #
3.X:guess = int(input('Enter an integer : '))
9)タプルパラメータを除去してパケットを解く.def(a,(b,c):passのように関数を定義できません
10)oct()関数を修正する新式の8進字変数.
2.Xの方式は以下の通りである.
0666 438 oct(438) '0666' 3.X:
0666 SyntaxError: invalid token (, line 1) 0o666 438 oct(438) '0o666'
11)2進数字面量とbin()関数を追加
>>> bin(438)
'0b110110110'
>>> _438 = '0b110110110'
>>> _438
'0b110110110'
12)拡張された反復可能な解包.Py 3.Xでは,a,b,*rest=seqと*rest,a=seqが合法であり,restがlistオブジェクトとseqが反復可能であることを2点だけ要求する.
13)新しいsuper()は、super()にパラメータを渡さなくてもよい.
>>> class C(object):
def __init__(self, a):
print('C', a)
>>> class D(C):
def __init(self, a):
super().__init__(a) # super()
>>> D(8)
C 8
<__main__.d object="" at="">
14)新しいmetaclass構文:
class Foo(*bases, **kwds):
pass
15)class decoratorをサポートする.関数decoratorと同様に使用します.
>>> def foo(cls_a):
def print_func(self):
print('Hello, world!')
cls_a.print = print_func
return cls_a
>>> @foo
class C(object):
pass
>>> C().print()
Hello, world!
class decoratorはタヌキを太子に変える大トリックに使うことができます.詳細については、PEP 3129を参照してください.
4.文字列とバイト列
1)文字列はstrの1種類しかありませんが、2.xバージョンのunicodeはほぼ同じです.
2)バイト列については、「データ型」の2番目の項目を参照してください.
5.データ型
1)Py3.Xはlongタイプを除いて、今は1つの整数型--intしかありませんが、その行為は2のようです.Xバージョンのlong
2)bytesタイプが追加され、2に対応する.Xバージョンの8ビット列で、bytesの字面量を定義する方法は以下の通りです.
>>> b = b'china'
>>> type(b)
strオブジェクトとbytesオブジェクトは使用できる.encode() (str -> bytes) or .decode()法(bytes->str)法は相互に変換される.
>>> s = b.decode()
>>> s
'china'
>>> b1 = s.encode()
>>> b1
b'china'
3)dictの.keys()、.itemsと.values()メソッドは反復器を返し,以前のiterkeys()などの関数は廃棄された.同時に取り除いたのはdict.has_ですkey()は、inで代用しましょう
6.オブジェクト向け
1)抽象ベースクラス(Abstraaact Base Classes,ABCs)を導入する.
2)容器類と反復器類はABCs化されているのでcellectionsモジュールのタイプはPy 2よりも大きい.5多すぎます.
>>> import collections
>>> print('
'.join(dir(collections)))
Callable
Container
Hashable
ItemsView
Iterable
Iterator
KeysView
Mapping
MappingView
MutableMapping
MutableSequence
MutableSet
NamedTuple
Sequence
Set
Sized
ValuesView
__all__
__builtins__
__doc__
__file__
__name__
_abcoll
_itemgetter
_sys
defaultdict
deque
また、数値タイプもABCs化されている.この点については、PEP 3119およびPEP 3141を参照してください.
3)反復器のnext()メソッドをnext()と改名し,反復器のnext()メソッドを呼び出すために内蔵関数next()を追加する
4)@abstractmethodと@abstractpropertyの2つのdecoratorを追加し,抽象メソッド(属性)を記述するのがより便利である.
7.異常
1)だから異常はすべてBaseExceptionから継承して、そしてStardardErrorを削除しました
2)異常類を除去するシーケンス挙動と.メッセージ属性
3)raise Exception,args構文の代わりにraise Exception(args)を用いる
4)例外の構文変更をキャプチャし,asキーワードを導入して例外インスタンスをPy 2で識別する.5:
>>> try:
... raise NotImplementedError('Error')
... except NotImplementedError, error:
... print error.message
...
Error
Py 3.0:
>>> try:
raise NotImplementedError('Error')
except NotImplementedError as error: # as
print(str(error))
Error
5)contextは3.0 a 1バージョンで実装されていないため、異常チェーン
8.モジュール変動
1)cPickleモジュールを除去し,pickleモジュールで代用できる.最終的には、透明で効率的なモジュールがあります.
2)imageopモジュールを除去
3)audiodev,Bastion,bsddb 185,exceptions,linuxaudiodev,md 5,MimeWriter,mimify,popen 2,rexec,sets,sha,stringold,strop,sunaudiodev,timing,xmllibモジュールを除去
4)bsddbモジュールを除去した(単独で配布し、http://www.jcea.es/programacion/pybsddb.htm)
5)newモジュールを取り外した
6)os.tmpnam()とos.tmpfile()関数はtmpfileモジュールの下に移動されます
7)tokenizeモジュールはbytesを使用して動作します.主なエントリポイントはgenerateではありませんtokensではなくtokenize.tokenize()
9.その他
1)xrange()はrange()と名前を変更し、range()を使用してlistを取得するには、明示的に呼び出す必要があります.
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2)bytesオブジェクトはhashではなく、b.lower()、b.strip()およびb.split()メソッドもサポートされていませんが、後者についてはb.strip(b’trf’)およびb.split(b’’’)を使用して同じ目的を達成できます.
3)zip()、map()、filter()は反復器を返します.apply()、callable()、coerce()、execfile()、reduce()およびreload()関数が除去する、callable()をhasattr()で置き換えることができるようになった.hasattr()の構文は、hasattr(string,'name')のようになります.
4)string.lettersは関連しています...uppercaseが除去されましたstringに変更してください.ascii_letters等
5)x
7)file類は廃棄され、Py 2にある.5:
>>> file
Py 3.X:
>>> file
Traceback (most recent call last):
File "", line 1, in
file
NameError: name 'file' is not defined