1 つのラムダ関数
関数の形式は lambda key:express です。匿名関数 lambda は、keys パラメータを受け取り、式の値を返す式関数です。したがって、return や関数名は不要で、sorted などのキーパラメータを必要とする関数でよく使用されます。
2 tuple()。括弧の代わりにカンマで区別されます。 たとえば、初心者は要素のタプルを (12) と書くことがよくありますが、実際には 1 つの要素 12 として解釈されます。正しい書き方は、(12,) の後にカンマを付ける必要があります。要素。
3 モジュールのインポート。例:
ランダムにインポート
print random.choice(range(10))
および
ランダムなインポート選択から
print Choice(range(10))
初心者は誤解するかもしれません。2 番目の方法はモジュール全体をインポートせずに関数のみをインポートします。これは間違っています。実際にはモジュール全体がインポートされていますが、関数への参照は保存されています。したがって、from-import の構文ではパフォーマンスに違いはなく、メモリも節約されません。
4 数百ものモジュールがあり、それらを使用したい場合、それらを 1 つずつインポートするのは面倒だと思うかもしれません。簡単な方法はありますか? 答えは「はい」です。これらのモジュールをパッケージに編成することです。実際、モジュールをディレクトリに配置し、__init__.py ファイルを追加するだけで、Python はそれをパッケージとして扱い、内部の関数を使用してドット属性モードでアクセスできます。
5 変数オブジェクトは参照によって渡されますが、不変オブジェクトは値によって渡されます。 では、どのオブジェクトが可変で、何が不変なのか。すべての Python オブジェクトには、type、identifier、value という 3 つの属性があります。値が変更可能な場合、それは変更可能なオブジェクトです。数値、文字列、タプルはすべて不変オブジェクトですが、残りのリスト、辞書、クラス、クラス インスタンスなどはすべて変更可能オブジェクトです。
6 イテレータは、イテレータ プロトコルを実装するコンテナ オブジェクトとして理解されます。 クラスにはオブジェクトを返す __iter__() メソッドが必要です。このオブジェクトには __next__() メソッドが必要で、次のメソッドの適切な場所で StopIteration 例外を返す必要があります。イテレータはあまり頻繁に使用されないため、あまり心配する必要はありません。代替手段はジェネレーターです。
class MyIterator(object): """docstring for MyIterator""" def __init__(self, num): self.num = num def __iter__(self): return self; def __next__(self): if self.num <= 0: raise StopIteration; self.num -= 1; return self.num; for each in MyIterator(5): print(each); -> 结果
7 つの発電機。 yield ステートメントが関数内にある限り、ジェネレーターに変換されます。 yield ステートメントに遭遇すると、コンテキストが保存され、関数が終了します。
注: ジェネレーターには return ステートメントはありません。
def fun2(num): print("start generator"); while(num>0): yield num; num -=1; a=[each for each in fun2(5)] print(a);->结果 start generator [5, 4, 3, 2, 1]
学習の過程では間違いは避けられません。読んでいてわからないことや質問がある場合。
上記の記事は、Python 初心者の間でよくある疑問とその答えを簡単に説明したものであり、編集者が共有した内容がすべてですので、参考にしていただければ幸いです。また、皆様にも Script Home をサポートしていただければ幸いです。