我想要做這樣的事情獲得說法變量名:蟒蛇在功能
fib = 1
foo = (arg):
print arg, argName # the name of the variable that was put in for arg
foo(fib)
而得到這個返回:
1, fib
我想要做這樣的事情獲得說法變量名:蟒蛇在功能
fib = 1
foo = (arg):
print arg, argName # the name of the variable that was put in for arg
foo(fib)
而得到這個返回:
1, fib
你不能那樣做(如伊格納西奧巴斯克斯 - 艾布拉姆斯已經回答了),但你可以以類似的方式做到這一點:
>>> def foo(**kwargs):
for arg_name in kwargs:
return kwargs[arg_name], arg_name
>>> foo(fib=1)
(1, 'fib')
唯一的區別是,你必須使用關鍵字參數,否則它將無法工作。
的替代解決方案是也訪問傳遞的變量,這將導致在獲得函數,類或名稱(或其他任何將具有定義的此名稱)的名字的屬性__name__
。唯一應該注意的是,默認情況下,這不是變量的名稱,而是函數/類/模塊的原始名稱(在定義時指定的名稱)。看到這裏的例子:http://ideone.com/MzHNND
不能完成。 Python不區分該級別的名稱。
如何通過使用'locals()','globals()'循環變量並通過比較'id()'的返回值來找出哪些名稱引用給定值? – 2013-09-16 11:01:01
def print_args(**kwargs):
for name,value in kwargs.iteritems():
print name, value
這不是在Python中有效的函數定義。 – chepner 2012-07-20 16:42:56
@chepner:我寧願把它當作[僞代碼](http://en.wikipedia.org/wiki/Pseudocode)。 – Tadeck 2012-07-20 16:43:58
你爲什麼想這樣做? – 2012-07-20 17:09:41