Python の global ステートメントでのグローバル変数の値の変更
Python のグローバル変数: int string、list、dic(map) global が存在する場合、その値を変更できます。 if にグローバルが存在するかどうか、または if が実行できるかどうかは関係ありません。
ただし、
if bGlobal: global g_strVal;
int 文字列がない場合は、エラーが報告されます。 list dic(map) もOKです。
#!/usr/bin/dev python import sys import os g_nVal = 0; g_strVal = "aaaa"; g_map = { "aaa" : "111", "bbb" : "222", "ccc" : "333", "ddd" : "444" } g_ls = ['a', 'b', 'c'] def FixInt(bGlobal = False): if bGlobal: global g_nVal; g_nVal = g_nVal + 1; def FixString(bGlobal = False): if bGlobal: global g_strVal; #fix string value g_strVal = g_strVal + 'b'; def FixMap(bGlobal = False): if bGlobal: global g_map; #fix map value g_map['aaa'] = 'aaa__' + g_strVal; g_map['bbb'] = 'bbb__' + g_strVal; g_map['ccc'] = 'ccc__' + g_strVal; g_map['ddd'] = 'ddd__' + g_strVal; def FixList(bGlobal = False): if bGlobal: global g_ls; g_ls.append('1'); def PrintVal(strInfo): if strInfo: print("==== %s =====" %strInfo); print("int value:%d" %g_nVal); print("string value:%s" %g_strVal); print("map value:%s" %g_map); print("list value:%s" %g_ls); print("\n\n"); if "__main__" == __name__: PrintVal("The orgin vlaue"); FixInt(); FixString(); FixMap(); FixList(); PrintVal("print all bGlobal = False vlaue"); FixInt(True); FixString(True); FixMap(True); FixList(True); PrintVal("print all bGlobal = True vlaue");
Result:
==== The orgin vlaue ===== int value:0 string value:aaaa map value:{'aaa': '111', 'bbb': '222', 'ccc': '333', 'ddd': '444'} list value:['a', 'b', 'c'] g_nVal src:0 g_nVal dst:1 ==== print all bGlobal = False value ===== int value:1 string value:aaaab map value:{'aaa': 'aaa__aaaab', 'bbb': 'bbb__aaaab', 'ccc': 'ccc__aaaab', 'ddd': 'ddd__aaaab'} list value:['a', 'b', 'c', '1'] g_nVal src:1 g_nVal dst:2 ==== print all bGlobal = True value ===== int value:2 string value:aaaabb map value:{'aaa': 'aaa__aaaabb', 'bbb': 'bbb__aaaabb', 'ccc': 'ccc__aaaabb', 'ddd': 'ddd__aaaabb'} list value:['a', 'b', 'c', '1', '1']
グローバル辞書変数を変更するには、globalキーワードを使用してみてはいかがでしょうか
たとえば、次のコードです
s = 'foo' d = {'a':1} def f(): s = 'bar' d['b'] = 2 f() print s print d
変更する辞書の値 d グローバルを使用する必要はありません キーワードを最初に宣言する必要がありますか?
これは、
文 s = 'bar' では、グローバル変数 s を参照するか、新しいローカル変数を作成することができるため、「曖昧」です。そのため、Python では、デフォルトで、その動作はローカル変数を作成することです。グローバルが明示的に宣言されていない限り、d['b']=2 という文では、d がローカル変数とみなされると KeyError が報告されるため、グローバル d のみを参照できるため、これは「明示的」です。したがって、明示的にグローバルを宣言する必要はありません。
上記の 2 つの代入ステートメントは実際には異なる動作であり、1 つは再バインディング、もう 1 つは突然変異です。
d = {'a':1} def f(): d = {} d['b'] = 2 f() print d
注意深く考えてみると、dict にグローバルが必要ないだけでなく、すべての「明示的な」ものにもグローバルが必要ないことがわかります。 int 型と str 型は変更方法が x = y の 1 つしかないため、この変更方法も変数の作成方法なので曖昧さが生じ、変更するのか作成するのかわかりません。 dict/list/objects などについては、dict['x']=y または list.append() を使用して変更できます。変数の作成と競合せず、曖昧さも生じないため、変更する必要はありません。明示的にグローバルです。

ホット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を入力してください...

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

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

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

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

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。
