Pythonそれが独自の言語としてユニークにするいくつかの特徴は何ですか?私は良いものから悪いもの、邪魔に役立つもの、構文から実際の使用法まで、あらゆる種類の特徴を探しています、しかし、不明瞭でない観察は、平均的な開発者にとって最も有用でしょう。
私はここの初心者なので、直感的なことを説明する必要があるかもしれません。
あなたは絶対にユニークである機能を見つけるのに苦労するでしょう。現存するほとんどの言語機能は、当初から複数の言語で採用されています。珍しいものもあるかもしれませんが、それは主にそれらが新しくてまだ不明瞭であるか、あるいは正当な理由で絶滅したためです。それにもかかわらず、それでも、機能の組み合わせを見る方がよいでしょう。
つまり、Python=のいくつかの機能は、比較的ユニークな組み合わせになるはずです。少なくとも、ほとんどの機能セットが重複している、人気のある(そして実用的な)言語としてリモートで認識している言語はありません。コメントでは、Rubyはかなり近いですが、それでも多くの違いがあります。
attr = SomeDataType()
のような数行を追加して通常どおりに記述でき、大量のコードが自動的に生成されます。この例は Djangoの「モデル」 です。O(1)
スペースは多くの場合自然に発生し、実際にメモリ内のすべてのアイテムを一度に必要とするタスクはほとんどありません)。O(1)
スペースが使用されます)。yield
、主にイテレータ(ここではジェネレータと呼ばれます)の記述をはるかに効率的にしますこれらは上記の大物であり、あらゆる種類の制御フローをサポートしています。 C#にも同じキーワードを使用して類似したものがあります。しかし、yield
はまた、限られた種類のコルーチン(たとえば、Luaはより手の込んだサポートを持っています)をサポートするためにオーバーロードされていますが、難しい問題に取り組む賢い人々によってうまく利用されています。私の頭の上の2つの例: バックトレースとスタック制限なしの再帰的降下解析 および 非同期I/O (便利な構文を使用)。for key, value in mapping.items()
)、既知の長さ(正直なところ、ほとんどのタプル)のイテラブルを複数の変数にアンパックできます。 3.x以降は、長さが不明なコレクションの場合でも実用的です。単一のアイテムを取得するいくつかの変数と、残っているものを取得する変数を指定できるためです:first, *everything_in_between, last = values
。propery
オブジェクトにラップする小さな関数を書きました。Python=をユニークにする唯一のものは、それが公開する機能の特定の組み合わせです。これはほとんどのプログラミング言語に当てはまります。
または、1つ小さなことがあるかもしれません。Pythonが明示的にself
を他の言語で行われるオブジェクトメンバー関数に正式なパラメーターとして渡す方法を見たことはありません。物事、そしてこれが実際に何かを変える方法はわかりません。
しかし、私はPythonがあまり流暢ではないので、間違いがあるかもしれません。
Generator Expressions
_input()
説明しよう。何かを出力するステートメントに値を割り当てることができる言語(これまでのところ)を見たことがない。Rubyの_print/gets
_に似ているが、値が割り当てられている代わりに:_print "Foo" bar = gets
_yield
ordereddict, namedtuple, array, list, Tuple, dictionary
_所有者のプロパティになるdocstringの自動処理。一般に、Pythonの優れたイントロスペクション機能はすべて、help()を使用する機能から、オブジェクトのファーストクラスのプロパティとして__doc__
を使用する機能まで、非常にユニークな言語にします。例えば:
>>> class DocStringException(Exception):
... """Error message is the same as docstring"""
... def __str__(self):
... return repr(self.__doc__)
...
>>> class ExampleException(DocStringException):
... """An example happened"""
...
>>> raise ExampleException
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
__main__.ExampleException: 'An example happened'
その他の有用なイントロスペクション機能: