我想改变已经定义的函数的变量名。最后它应该是这样的:
def f(a=1):
return a
#insert your code here
print f(variable_name_different_from_a = 2)
此代码应打印数字2.这很难看,但这可能吗?
编辑: 我的问题确实是字面上的意思。在Python中,许多奇怪的事情是可能的,这是我经常学到的奇怪的东西。我也有一个用例,但最不可能解决这个问题。
答案 0 :(得分:1)
如果事先知道新参数的名称:
您可以重新定义f
作为原始函数的包装器,而不是修改现有的函数对象,这听起来不是一个好主意(如果可能的话):
# insert this code there
_orig_f = f
def f(variable_name_different_from_a):
return _orig_f(variable_name_different_from_a)
如果新参数的名称未提前 :
上面的包装器可以使用*a, **kw
,并在将它们传递给包装函数之前对它们进行操作:
new_varname = raw_input('Enter var name')
def f(*a, **kw):
if new_varname in kw and 'a' not in kw:
kw['a'] = kw.pop(new_varname)
return _orig_f(*a, **kw)
当使用位置或关键字args调用时,这适用于任何1-arg函数。