def thefunction(a=1,b=2,c=3):
pass
print allkeywordsof(thefunction) #allkeywordsof doesnt exist
這將使[A,B,C]獲取關鍵參數的功能,Python的
有沒有像allkeywordsof的功能?
我不能改變任何東西里面,thefunction
def thefunction(a=1,b=2,c=3):
pass
print allkeywordsof(thefunction) #allkeywordsof doesnt exist
這將使[A,B,C]獲取關鍵參數的功能,Python的
有沒有像allkeywordsof的功能?
我不能改變任何東西里面,thefunction
你想是這樣的:
>>> def func(x,y,z,a=1,b=2,c=3):
pass
>>> func.func_code.co_varnames[-len(func.func_defaults):]
('a', 'b', 'c')
co_varnames是一個錯誤的決定,它也包含非關鍵字參數和主題起始者只需要關鍵字參數 – 2012-08-11 13:28:36
這一個是好的,因爲我們不需要使用檢查 – user1513192 2012-08-11 13:31:34
@RostyslavDzinko是的,你是對的,但問題是'inspect.getargspec()'也返回非關鍵字參數。 – 2012-08-11 13:32:43
我認爲你正在尋找inspect.getargspec:
import inspect
def thefunction(a=1,b=2,c=3):
pass
argspec = inspect.getargspec(thefunction)
print(argspec.args)
產量
['a', 'b', 'c']
如果你的函數同時包含位置和關鍵字參數,然後找到關鍵字參數的名稱更復雜一些,但不要太用力:
def thefunction(pos1, pos2, a=1,b=2,c=3, *args, **kwargs):
pass
argspec = inspect.getargspec(thefunction)
print(argspec)
# ArgSpec(args=['pos1', 'pos2', 'a', 'b', 'c'], varargs='args', keywords='kwargs', defaults=(1, 2, 3))
print(argspec.args)
# ['pos1', 'pos2', 'a', 'b', 'c']
print(argspec.args[-len(argspec.defaults):])
# ['a', 'b', 'c']
如何才能讓它成爲agrs only – user1513192 2012-08-11 13:24:45
'inspect.getargspec(thefunction).args' – jamylak 2012-08-11 13:26:02
'argspec.args [-len(argspec.defaults): ]「這應該被接受,因爲它回答了這個問題。 – jamylak 2012-08-11 13:38:17
您可以執行下列操作,以得到你所尋找什麼。
>>>
>>> def funct(a=1,b=2,c=3):
... pass
...
>>> import inspect
>>> inspect.getargspec(funct)[0]
['a', 'b', 'c']
>>>
[在python獲取方法的參數名稱]的http://stackoverflow.com/questions/2677185/how-read-method-signature – 2012-08-11 13:23:17
可能重複的重複(http://stackoverflow.com/questions/ 218616/getting-method-parameter-names-in-python) – Marcin 2012-08-11 17:58:47