6

私はこのようなことをしたい:

fib = 1
foo = (arg):
    print arg, argName # the name of the variable that was put in for arg
foo(fib)

そして、これを返します:

1, fib
4

4 に答える 4

6

(Ignacio Vazquez-Abramsがすでに回答しているように)そのようにすることはできませんが、同様の方法で行うことができます。

>>> def foo(**kwargs):
    for arg_name in kwargs:
        return kwargs[arg_name], arg_name


>>> foo(fib=1)
(1, 'fib')

唯一の違いは、キーワード引数を使用する必要があることです。そうしないと、機能しません。

別の解決策は、渡された変数の属性にアクセスすることでもあり__name__ます。これにより、関数、クラス、または名前(またはこの名前が定義されているその他のもの)の名前が取得されます。注意すべき唯一のことは、デフォルトではこれは変数の名前ではなく、関数/クラス/モジュールの元の名前(定義時に割り当てられた名前)であるということです。こちらの例をご覧ください:http://ideone.com/MzHNND

于 2012-07-20T16:41:06.323 に答える
4

できません。Pythonは、そのレベルで名前を区別しません。

于 2012-07-20T16:38:04.847 に答える
2

python-varnameこれで、パッケージの値ラッパーを使用してこれを実行できます。

from varname import Wrapper

fib = Wrapper(1)

def foo(arg):
  print(arg.value, arg.name)

foo(fib)
# 1, "fib"

パッケージはhttps://github.com/pwwang/python-varnameでホストされています

私はパッケージの作者です。それを使用して質問があれば私に知らせてください。

于 2020-07-09T19:56:44.203 に答える
0
def print_args(**kwargs):
    for name,value in kwargs.iteritems():
        print name, value
于 2012-07-20T16:40:58.117 に答える