10

文字列を関数内の何かに設定し、それを別の関数で出力して、文字列が変更されていないことを確認しようとしています。私は何か間違ったことをしていますか?

スクリプトの先頭で変数を定義する

CHARNAME = "Unnamed"

変数を設定する関数

def setName(name):
        CHARNAME = name
        print CHARNAME

機能の使用

print CHARNAME
setName("1234")
print CHARNAME

出力

Unnamed
1234
Unnamed
4

2 に答える 2

13

CHARNAME = name関数内で行う場合、そのスコープに対してのみsetName定義しています。つまり、関数の外からアクセスすることはできません。したがって、グローバルvriable (値が のもの) は変更されず、関数を呼び出した後、その内容の出力に進みます。CHARNAME"Unnamed"

実際にはグローバル変数を上書きしていませんCHARNAME。必要に応じて、変数を定義する前に次のようにしCHARNAMEて、関数内の変数をグローバル化する必要があります。setNameglobal CHARNAME

def setName(name):
    global CHARNAME
    CHARNAME = name
    print CHARNAME

または、関数からreturnの値を取得できます。CHARNAME

def setName(name):
    return name

CHARNAME = setName('1234')

もちろん、これはかなり役に立たないので、そうすることもできますCHARNAME = '1234'

于 2013-11-09T23:17:11.093 に答える
3

あなたが必要

def setName(name):
    global CHARNAME
    CHARNAME = name
    print CHARNAME

http://effbot.org/pyfaq/how-do-you-set-a-global-variable-in-a-function.htm

于 2013-11-09T23:18:52.133 に答える