12

文字列からグローバル変数を作成する方法はありますか? 次のように文字列から変数を作成できることを知っています。

    string = 'hello'
    val = 10
    vars()[string] = val

したがって、hello を 10 に等しい変数にします。そのユーザー入力変数をグローバルにする方法がわかりませんが、これは機能しません。

    string = 'hello'
    val = 10
    vars()[string] = val
    eval("global " + string)
4

2 に答える 2

26

globals()次の関数を使用できます。

name = "hello"
globals()[name] = 10
于 2012-05-29T20:37:54.587 に答える
0

モジュールからのグローバル変数の設定:
私のバージョンの argparse を単純化するために、名前の重複を最小限に抑え、大文字と小文字を区別しない複数の文字フラグをサポートしながら、大文字と小文字が混在するフラグを使用してグローバル変数を設定するために、似たようなことを試みました。私が思いついた唯一の解決策は、実行できるステートメントリストを返すことでした。モジュール内で実行しようとしてもうまくいきませんでした。私の例:

セルフテスト

def main():
    print "Some tests with provided args"

    One = 1
    Two = 2
    Three = 3

    prs = ArgumentParserCI(description='process cmdline args')
    prs.add_argument('One')
    prs.add_argument('Three')
    cmdlineargs = ['-one', 'one', '--thr', "III"]
    argsdict, unknownargs, execlist = prs.parse_args(cmdlineargs)
    exec(execlist)
    print("cmdlineargs:", cmdlineargs)
    print (One, Two, Three)


if __name__ == "__main__":
    main()    

プリントアウト:

Some tests with provided args
('cmdlineargs:', ['-one', 'one', '--thr', 'III'])
('one', 2, 'III')
于 2016-02-26T20:54:29.417 に答える