Python のスコープを修正するための 5 つのポイント
1. ブロックレベルのスコープ
考えてみて、この時点で次のプログラムを実行すると何か出力があるでしょうか?処刑は成功するでしょうか?
#块级作用域 if 1 == 1: name = "lzl" print(name) for i in range(10): age = i print(age)
まず実行結果を見てみましょう
C:/Users/L/PycharmProjects/s14/preview/Day8/作用域/main.py lzl 9 Process finished with exit code 0
コードは正常に実行され、問題はありません。Java/C# では、上記のコードを実行すると、名前と年齢が定義されていないことが示されますが、これは、Python にはブロックレベルのスコープがないため、コード ブロック内の変数は正常に実行できます。
前に学習した知識を復習してください。関数を学習するとき、関数は個別のスコープです。Python にはブロックレベルのスコープはありませんが、次のコードを見てください
#localscope
。このコードを実行して考えてください。何か出力があるでしょうか?
def func(): name = "lzl" print(name)
実行エラーです。これは誰でも理解できると思います。name 変数は func() 関数内でのみ有効であるため、グローバルに呼び出すことはできません。上記のコードを簡単に調整してから、内容を確認してください。結果は?
Traceback (most recent call last): File "C:/Users/L/PycharmProjects/s14/preview/Day8/作用域/main.py", line 23, in <module> print(name) NameError: name 'name' is not defined
変数名を出力する前に、この関数を実行すると出力が変わりますか?
#局部作用域 def func(): name = "lzl" func() #执行函数 print(name)
3. 関数を調整して、次のコードの実行結果を確認してください。
Traceback (most recent call last): File "C:/Users/L/PycharmProjects/s14/preview/Day8/作用域/main.py", line 23, in <module> print(name) NameError: name 'name' is not defined
関数を学習したら、f1() が実行された後に Snor が出力されることを知っておく必要があります。まず概念を覚えておいてください。Python にはスコープ チェーンがあり、変数は内部から外部に検索されます。 、まず自分のスコープに行きます 見つからずエラーを報告するまで上司に探しに行きませんでした
4. 究極版のスコープ
さて、伏線はこれくらいにして、究極版です。はこちらです~~#作用域链 name = "lzl" def f1(): name = "Eric" def f2(): name = "Snor" print(name) f2() f1()
f2() の実行結果は関数 f1 です。 ret=f1; ret() を実行するときのメモリアドレスは、f1() を実行するときと同じです。スコープチェーン、関数内 変数がなければ外側を見ることになるので、このときの変数名の値は「lzl」です これが理解できれば、最終的にやったコードの答えもわかります。今は答えません
#终极版作用域 name = "lzl" def f1(): print(name) def f2(): name = "eric" f1() f2()
はい、関数が実行される前に、スコープが形成され、スコープチェーンも生成されていることを思い出してください。 5. Sina のインタビューの質問
#终极版作用域 name = "lzl" def f1(): print(name) def f2(): name = "eric" return f1 ret = f2() ret() #输出:lzl
李のタイプを判断しますか? li の要素はどのような型ですか?
#终极版作用域 name = "lzl" def f1(): print(name) def f2(): name = "eric" f1() f2() # 输出:lzl
li がリスト型で、リスト内の要素が関数であることがわかります。 次に、リストの最初の要素の戻り値を出力します。
li = [lambda :x for x in range(10)]

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...
