ホームページ > バックエンド開発 > Python チュートリアル > Pythonクロージャの詳しい説明

Pythonクロージャの詳しい説明

高洛峰
リリース: 2016-10-18 14:53:06
オリジナル
1496 人が閲覧しました

「クロージャ」という言葉はプログラミングを勉強したことのあるほとんどの学生には馴染みがあると思いますが、それでも理解するのが難しい場合があります。まず定義を見てみましょう:

クロージャは、関数とそれに関連付けられた参照環境で構成されるエンティティです。たとえば、参照リソースには次のような定義があります。深い制約を実装する場合、参照環境を明示的に表現できるものを作成し、それを関連するサブルーチンとバンドルして、バンドル全体がクロージャと呼ばれるようにする必要があります。

Pythonのクロージャ(クロージャ)は、実はそれほど複雑なものではありません。

平たく言うと、内部関数内で外部スコープ (グローバル スコープではない) の変数が参照されている場合、内部関数はクロージャとみなされます。これは、名前 (変数) によって参照される「内部」関数にすぎず、この名前 (変数) は、それを含む「外部」関数に対するローカル変数です。

これを読んでもクロージャが何なのかまだ理解できないかもしれませんが、次の小さな例を読めば必ず理解できるでしょう。

#! /usr/bin/env python
#coding=utf-8
# http://www.pythontab.com

#関数を定義する
def plus(number):

#関数内で定義する関数、実際、この内部の関数はクロージャとみなされます
def plus_in(number_in):
#ここにnumber_in変数を出力して、どの変数が渡されるかを誰もがより明確に知ることができます
print str(number_in) + "rn "

return number+number_in
#実際、ここで返されるのはクロージャの結果です
return plus_in


#プラス関数に値を代入します。この 20 はパラメータnumberを代入することです
v1=plus(20 )

print v1(100) #ここでの 100 は実際にはパラメーターnumber_in を与えることに注意してください


演算結果:

100

120

注: 100 は print str(number_in) + "rn によって出力された結果です「





関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート