Python(5)の基盤を統合する

Pythonファンデーションを統合
5、機能

関数はPythonで重要な役割を果たします。カプセル化された関数は、コードの再利用性を高めるだけでなく、Pythonでの関数の適用においてより高い柔軟性を備えています。関数をうまく利用できるかどうかは、真のPythonマスターであるかどうかの重要な指標になる可能性があります。

(1)機能、最初はオブジェクト

まず第一に、Pythonは動的に強く型付けされた言語であるだけでなく、本当に強く型付けされた言語でもあります。 pythonのすべては、それについて話すだけでなく、オブジェクトです。定数はオブジェクトであり、変数はオブジェクトであり、4つのデータ構造もオブジェクトです(互いにネストできることを覚えていますか?)では、関数についてはどうでしょうか。はい、関数もオブジェクトです。

**例1:**文字列の長さを計算する関数を作成する

def func_1(strs):

return len(strs)

func_1("How are you!")

12

Pythonオブジェクトとして、通常、オブジェクトモデルに必要な3つの属性、つまりid、type、およびvalueがあります。上記の関数のID、タイプ、および値を見てみましょう:

id(func_1)

47027880

type(func_1)

< class 'function'>

func_1

< function func_1 at 0x02CD96A8>

強力なオブジェクトタイプとして、通常は次の特性があります。

そして、これらの機能はPython関数で利用できます。

1、 関数は変数への割り当てを可能にします

func_2 = func_1

PS:関数が別の変数に割り当てられている場合、その関数は呼び出されず、新しい名前のみが関数オブジェクトにバインドされることに注意してください。

func_2("what’s this?")

12

もちろん、オブジェクトへの参照を追加するだけなので、実際には、プログラムが必要とする限り、さらに参照を追加できますが、さらに参照を追加できます。本質的に、これらの変数はすべて同じものを指します。関数オブジェクト。

func_3 = func_1

if func_3 == func_2 : print(‘ok!’)

ok!

2、 関数は、要素として他のコンテナオブジェクトに追加できます

リスト、辞書、辞書、コレクションなど、多くのコンテナオブジェクトがあります。それらは、整数、文字列を含む任意のオブジェクトを格納でき、同様に、関数もコンテナオブジェクトに格納できます。例えば

**例2:**関数は独立した要素としてリストに含まれています

list1 = [func_1, len]

for x in list1:

print(x("abcde"))

5

5

コード分析:

(1)list1の2つの要素:func_1はカスタム関数であり、lenはpythonの組み込み関数です。

(2)ループ反復の場合、関数オブジェクトはx変数に割り当てられます。

(3)x( "abcde")を呼び出して表示します。

もちろん、より直接的な方法は、要素のインデックスを介して関数オブジェクトを取得してから、関数を呼び出すことです。

list10

5

3、 関数は、引数として別の関数に渡すことができます

例3:

def func_4(func):

ln = func( "関数の魔法の関数!")

print( "文字列の長さは次のとおりです:" + ln)

func_4(func_1)

文字列の長さは次のとおりです:7

4、 ある関数は、別の関数の戻り値として許可されます

別の関数の戻り値としての関数。次に例を示します。

def func_5():

return func_1

my_func = func_5()

my_func("my_python")

9

次のように省略できます。

func_5()("my_python")

9

ここで、func_5は実際には高次の関数です。 (高次関数とは何ですか?本を読むことをお勧めします!)

PS:Pythonの組み込み関数の中で、* map *関数などの一般的な高次関数。

例: mapは、関数と反復オブジェクトをパラメーターとして受け入れます。mapを呼び出すときは、反復オブジェクトの要素をパラメーターとして関数を繰り返し呼び出します。

map(func_1, ["abcde","def","gh","lmnopqr"])

lens = map(func_1, ["abc","def","gh","lmnop"])

list(lens)

[5, 3, 2, 7]

**map の機能は次と同等です:

[ func_1(i) for i in ["abc","def","gh","lmnop"]]

[5, 3, 2, 7]

それに比べて、マップの実行効率は速くなります。

(2)関数はネストすることもできます

リストにはリストが含まれ、辞書には辞書が含まれていますが、関数に関数を含めることはできますか?答えは「はい」です。関数を含むこの種の関数は、ネストされた関数と呼ばれます。

**例4:**文字列の最初の2文字を削除した後、その長さを計算します

def func_6(my_str):

def func_7(a):

最初の文字を削除してスライスを取得します

return a[2:]

new_str = func_7(my_str)#call組み込み関数

スライスした文字列の長さを計算します

return len(new_str)

func_6("i_python")

6

PS:ネストされた関数にある関数はローカル変数と同等であることに注意してください。そのスコープはネストされた関数の内部に限定されており、関数の外部からアクセスすることはできません。

(3)関数のように呼び出すことができるクラスの作成方法

呼び出される__call__メソッドを実装します!

**例5:**呼び出すことができるクラスを作成する

class get_sum:

def init(self, x):

self.x = x

def call(self, y):

return self.x + y

my_sum = get_sum(1)#初期値を割り当てる

my_sum(5)#カスタムクラスを呼び出す

6

my_sum(5)を実行することは、get_sum._call __(self、4)を呼び出すことと同等であり、selfはインスタンスオブジェクトget_sumであり、初期値self.xは1に等しいため、my_sum(5)を呼び出すことの戻り値は1 +5です。

**PS:オブジェクトが呼び出し可能オブジェクトであるかどうかを判断するには、組み込み関数呼び出し可能を使用して判断できます。 ****

callable(func_1)

True

callable(3)

False

callable(len)

True

概して ###

関数を関数として扱うだけでなく、

カプセル化されたコードブロックだけではありません。

それもオブジェクトです、

他のすべてのオブジェクトと同じようにすることができます。

含まれ、割り当てられ、渡され、返され、

ネストすることもできます。

模倣することができます。 (そしてそれは高い模倣です〜!)

機能をよく見ると、

それでもこのように使えるとき(666〜)、

あなたが偉大な人にならないのは難しいです!

ステートメント:

この記事は、ブログガーデンのYangGuoによる記事から抜粋したものです。

https://www.cnblogs.com/duex/p/6725694.html

(一部変更)

Recommended Posts

Python(7)の基盤を統合する
Python(6)の基盤を統合する
Python(5)の基盤を統合する
Pythonの基盤を統合する(3)
Pythonの基盤を統合する(2)
「Pythonの基盤を統合する」(1)
pythonでのwheelの使用法
Pythonは中国語の4つの車輪を処理します
地主取引のPythonシミュレーション
Pythonの用途は何ですか
Python文字列プーリングの前提
Python3.8の新機能の秘密
Pythonの父がMicrosoftに加わる
python accesshdfsの操作
pythonでのタプルの使用法
pythonを実行するメソッドを終了します
pythonでのrbの意味を理解する
Pythonはスタックの構造を実装できますか?
pythonの必須パラメーターは何ですか
pythonの下部にあるロジスティック回帰
Python3クローラーでのAjaxの使用
PythonはTowerofHanoiゲームを解決します
pythonの複数のバージョンの競合を解決します
Python3.9の7つの機能
python変数の範囲は何ですか
Pythonは分数シーケンスの合計を実装します
Pythonの基礎を学ぶ2日間
pythonのid関数は何ですか
python3のピップパスはどこにありますか
Python言語の本質:Itertoolsライブラリ
2.3Python言語の基盤
python言語の利点は何ですか
pythonインスタンス化オブジェクトの特定のメソッド
2.1 Pythonインタープリター(pythonインタープリター)
python3はマスク描画の機能を実現します
python開発の見通しは何ですか
pythonの関数本体は何ですか
pythonインポートライブラリの特定の方法
pythonの複数のバージョンの競合を解決します
pythonでのadbの機能は何ですか
Python super()メソッドの原理の詳細な説明
javaとpythonの構文の違い
Pythonは学生管理システムの開発を実現します
PythonはDoudizhuでカードのシャッフルを実装します
pythonでのリストの意味と使用法
起動エラーを実行しているpythonの問題を解決します
python辞書の値を変更できますか?
Pythonはスネークゲームのソースコードを実装しています
Pythondecimalモジュールの使用法の詳細な説明
27歳でパイソンを学ぶのはどうですか?
ubuntuでpythonをアンインストールした結果、非常に
Pythonは釣りマスターのゲーム実装を書きます
Python構文の基本
Pythonの基本構文
Pythonの基礎知識(1)
pythonのPrettytableモジュール
09.Python3の共通モジュール
[898] pythonは2つのリストの共通部分を取得します|ユニオン|違い
Python関数パラメータ分類の原理の詳細な説明
エンタープライズ言語に対するpythonの利点は何ですか
Python2とPython3の違いの簡単な要約