「Python学習マニュアル第5版」-第19章関数の高度なトピック「Python学習マニュアル第5版」-第15章ドキュメント「Python学習マニュアル第5版」-第18章パラメータの自己学習ノートシリーズ:「Python学習マニュアルスタート前に書かれた第5版

前の章では、関数の基本、スコープ、パラメータについて説明しました。これらの基本的な知識に加えて、比較的高度な内容がいくつかあります。この章では、

この章のハイライト

1.再帰関数

2.関数のプロパティと注釈

3.ラムダ式

4.関数型プログラミングツール(マップ、フィルター)

上記4点については、

1.再帰関数

簡単に言うと、再帰関数は関数内で独自の関数を呼び出すことであり、より抽象的に感じるかもしれません。実際、コードを通じて理解する方が直感的です。次のコード例:

 

 これはリスト合計関数です。関数mysum()の内部では、関数自体mysum(L [1:])が呼び出されます。このような関数は再帰関数です。

上記のコードでは、この関数が呼び出されたときにどのように計算されるかが明確でない場合があります。コード(印刷)の行を追加して、各関数呼び出しの状況を表示できます。具体的なコード例は次のとおりです。

 

 追加の印刷行を通じて、フェッチするデータがなくなるまで、各関数呼び出しのデータ、つまり一度に1つのデータをフェッチし、フェッチしたデータを順番に合計することがわかります。

2.関数の属性とコメント

Pythonはオブジェクト指向プログラミングであるため、すべてがオブジェクトであるという観点から、関数もPythonのオブジェクトです。関数はオブジェクトであるため、属性を持っています。前の第15章(「Pythonラーニングマニュアル第5版」)-第15章ドキュメント)オブジェクトのプロパティを表示する方法を導入したので、同じ方法で関数のプロパティを表示することもできます。または、上記のmysum関数を例として使用すると、関数の作成、コード操作の例で、システムによって関数に対して自動的に作成されるプロパティを確認できます。次のように:

 

 

 このシステムには、関数によって自動的に作成される属性に名前を付ける機能があります。通常、属性の前後には二重のアンダースコアがありますが、これはなぜですか?私の理解は、主にユーザーが関数属性の名前を追加することに関連することを避けることです

一部のプログラミングソフトウェアでは、次のように、関数の属性を表示するときに自動選択項目を提供できます。

 

 

 関数の関連属性からも確認できます。属性がわからない場合は、非常に簡単です。ヘルプで属性の説明を確認してください

 

 

 上記は、関数のプロパティについて説明しています。さらに、関数には注釈、つまり、関数、パラメーター、および結果に関連するユーザー定義のデータを含めることができます。コードを通じて理解しやすくなります:上記のコードに基づいて調整します

 

 

 「リスト」はパラメータLに関するコメントです。[-> int]は関数の戻りに関するメモです。つまり、リストを渡して整数を返す必要があります。

3.ラムダ式

ラムダ式とは何ですか?まずコードを見てください:

 

 

 ラムダはステートメントではなく式であり、本体はコードブロックではなく独立した式です。

ラムダによって実装された操作は実際には関数によって実現できますが、なぜラムダが必要なのでしょうか?関数で実現できる場合も多くありますが、必要な関数はそれほど責任を負いません。関数を定義して呼び出したい場合、フィードバックは非常に複雑に見えます。現時点では、ラムダを使用して必要な関数をすばやく実現しています。高速かつ簡潔に見え、コード構造の観点からは、簡潔な審美性があります

4.関数型プログラミングツール(マップ、フィルター、縮小)

反復可能オブジェクトのマッピング関数:マップ

mapを実装し、各オブジェクトの関数を呼び出すことができます。たとえば、10ずつ増加する各要素に関連するリストがあります。コード例は次のとおりです。

 

 

 導入したばかりのラムダと組み合わせると、このコードは関数宣言を使用せずにさらに単純化して直接使用することができます。

 

 

 反復可能オブジェクトの要素を選択します。フィルター

フィルターを使用して要件を満たす要素を選択するか、上記のコードを変更の基礎として使用し、3より大きい数値を選択すると、コード例は次のようになります。

 

 

 反復可能オブジェクトの要素のマージ:削減

reduceを使用すると、すべての要素の加算や合計、乗算、乗算など、すべての要素を集約できます。コード例は次のとおりです。

 

 

 reduceシステムを直接使用すると、関数が定義されていないというコードエラーが表示されます。reduceはfunctoolsモジュールにあるため、次のように最初にモジュールをインポートする必要があります。

 

 

 あなたがそれをうまく使うことができるように、同じ構造、すべての要素を乗算する方法、あなたはそれを自分で試すことができます

以上がこの章で説明する内容全体です!次の章でお会いしましょう!

 

「Python学習マニュアル第5版」各章の時間計画と進捗:

2019.11.25-2019.12.01第01章完了:「Python学習マニュアル第5版」 -第1章Q&Aセッション

2019.12.02-2019.12.08第02章が完成:「Python学習マニュアル第5版」-第2Pythonがプログラムを実行する方法

2019.12.09-2019.12.15第03章完了:「Python学習マニュアル第5版」 -第3章Pythonプログラムの実行方法

2019.12.16-2019.12.22第04章完了:「Python学習マニュアル第5版」 -第4章でPythonオブジェクトタイプを紹介

2019.12.23-2019.12.29第05章完了:「Python学習マニュアル第5版」-第5数値型

2019.12.30-2020.01.05第06章完了:「Python学習マニュアル第5版」 -第6章動的型

2020.01.06-2020.01.12第07章完了:「Python学習マニュアル第5版」 -第7章文字列の基本

2020.01.12〜2020.01.19第08章完成:「Python学習マニュアル第5版」 -第8章リストと辞書

2020.01.20-2020.01.26第09章完成:「Python学習マニュアル第5版」 -第9章のタプル、ファイル、およびその他のコアタイプ

2020.01.27-2020.02.02第10章完了:「Python学習マニュアル第5版」 -第10章Pythonステートメントの概要

2020.02.03-2020.02.09第11章、「Python学習マニュアル第5版」 -第11章、割り当て、式、印刷

2020.02.10-2020.02.16第12章完成:「Python学習マニュアル第5版」 -第12章ifテストおよび文法規則

2020.02.17-2020.02.23第13章完了:「Python学習マニュアル第5版」 -第13章whileループおよびforループ

2020.02.24-2020.03.01第14章を完了:「Python学習マニュアル第5版」 -第14章反復と導出

2020.03.02-2020.03.08第15章を完了「Python学習マニュアル第5版」 -第15章のドキュメント

2020.03.09-2020.03.15第16章完了:「Python学習マニュアル第5版」 -第16章関数の基本

2020.03.16-2020.03.22第17章完了:「Python学習マニュアル第5版」 -第17章スコープ

2020.03.23-2020.03.29第18章完了:「Python学習マニュアル第5版」 -第18章パラメータ

2020.03.30-2020.04.05第19章完成

2020.04.06-2020.04.12第20章、未完成

2020.04.13-2020.04.19第21章、未完成

2020.04.20-2020.04.26第22章、未完成 

2020.04.27-2020.05.03第23章、未完成

 

次のリンクは、この研究ノートのすべての章の最新の進捗状況を提供します

自習ノートシリーズ「はじめてのPython第五版」

おすすめ

転載: www.cnblogs.com/zhangjiyou/p/12670953.html