1

Python のグローバル スコープについて質問があります。

私はこのスクリプトを作成して動作しますが、理由はわかりません:

#! /bin/python3
# -*- coding: UTF-8 -*-

data = []
stats = {'white':0, }

def main():
    global data

    with open(args.finput, 'r') as f:
        data = f.readlines()

    rwhitespaces()

    with open(foutput, 'w') as f:
        for line in data:
            f.write(line)

    print(stats)

def rwhitespaces():
    cnt = 0
    for line in data:
        if line == '\n':
            data.pop(cnt) # Modifing data var without global keywork and works, why??
            stats['fistro'] = 1 # Modifing stats var without global keywork and works why??
        cnt += 1

if __name__ == "__main__":
    main()

だから私はグローバルスコープで何かを誤解しています誰かが私を説明できますか??? ありがとう、そしてごめんなさい、私の悪い英語

4

1 に答える 1

5

これは、参照を変更するのではなく、可変オブジェクトにアクセスし、それ自体に変更を実行させるために機能します。

globalグローバル スコープの変数 ( ) に新しい値を割り当てる必要x = blahがありますが、単にアクセスする必要はありません。変数にアクセスするだけなので、キーワードdata.pop(cnt)を使用せずに実行できます。global

つまり、オブジェクトのプロパティを変更することではなく、オブジェクトを変数に割り当てることです。

于 2012-11-04T17:32:42.070 に答える