programing

python 함수 내부의 매개 변수 이름 목록을 가져오는 중

copyandpastes 2022. 10. 1. 22:57
반응형

python 함수 내부의 매개 변수 이름 목록을 가져오는 중

중복 가능성:
python에서 메서드 매개 변수 이름을 가져오는 중

python 함수 안에 들어가서 파라미터 이름 목록을 쉽게 얻을 수 있는 방법이 있나요?

예를 들어 다음과 같습니다.

def func(a,b,c):
    print magic_that_does_what_I_want()

>>> func()
['a','b','c']

감사합니다.

음, 사실 우린 그런 거 필요 없어inspect여기서.

>>> func = lambda x, y: (x, y)
>>> 
>>> func.__code__.co_argcount
2
>>> func.__code__.co_varnames
('x', 'y')
>>>
>>> def func2(x,y=3):
...  print(func2.__code__.co_varnames)
...  pass # Other things
... 
>>> func2(3,3)
('x', 'y')
>>> 
>>> func2.__defaults__
(3,)

Python 2.5 이전 버전의 경우 다음을 사용하십시오.func_code대신__code__,그리고.func_defaults대신__defaults__.

locals() 는 로컬 이름을 가진 사전을 반환합니다.

def func(a, b, c):
    print(locals().keys())

파라미터 목록을 출력합니다.다른 로컬 변수를 사용하는 경우 해당 변수가 이 목록에 포함됩니다.그러나 기능을 시작할 때 복사본을 만들 수 있습니다.

값을 원하는 경우,inspect모듈

import inspect

def func(a, b, c):
    frame = inspect.currentframe()
    args, _, _, values = inspect.getargvalues(frame)
    print 'function name "%s"' % inspect.getframeinfo(frame)[2]
    for i in args:
        print "    %s = %s" % (i, values[i])
    return [(i, values[i]) for i in args]

>>> func(1, 2, 3)
function name "func"
    a = 1
    b = 2
    c = 3
[('a', 1), ('b', 2), ('c', 3)]
import inspect

def func(a,b,c=5):
    pass

inspect.getargspec(func)  # inspect.signature(func) in Python 3

(['a', 'b', 'c'], None, None, (5,))

언급URL : https://stackoverflow.com/questions/582056/getting-list-of-parameter-names-inside-python-function

반응형