함수에 전달된 인수에서 원래 변수 이름을 추출하는 방법
다음 시나리오를 고려하십시오. 변수 이름을 인수로 요구하는 함수가 있습니다. 해당 이름을 기반으로 일부 작업을 수행합니다. 함수 내에서 원래 변수 이름을 얻을 수 있는 방법이 있습니까?
이 질문에 대답하려면 호출 컨텍스트를 검색하고 코드 컨텍스트에서 변수 이름을 추출할 수 있는 검사 모듈을 활용하는 방법을 살펴보겠습니다. .
<code class="python">import inspect def foo(a, f, b): # Get the stack frame of the calling function frame = inspect.currentframe() # Move up one level to get the frame of the calling context frame = inspect.getouterframes(frame)[1] # Get the source code context of the calling context string = inspect.getframeinfo(frame[0]).code_context[0].strip() # Extract the argument names from the code context args = string[string.find('(') + 1:-1].split(',') names = [] for i in args: if i.find('=') != -1: # Handle keyword arguments names.append(i.split('=')[1].strip()) else: # Handle positional arguments names.append(i) print(names) def main(): e = 1 c = 2 foo(e, 1000, b = c) main()</code>
설명:
- inspect.currentframe()은 현재 함수(이 경우 foo())의 스택 프레임을 가져옵니다.
- inspect.getouterframes()는 호출 함수 main()의 프레임을 가져오기 위해 호출 컨텍스트에서 한 수준 위로 탐색합니다.
- inspect.getframeinfo()는 호출 함수에 대한 코드 컨텍스트 정보를 검색합니다. 프레임을 획득했습니다.
- 코드 컨텍스트를 구문 분석하여 인수 목록을 분리한 다음 위치 인수와 키워드 인수를 모두 고려하여 인수 이름을 추출합니다.
- 마지막으로 원래 변수 목록 이름이 인쇄됩니다.
출력 예:
['e', '1000', 'c']
참고: 이 접근 방식에는 호출 스택을 검사하고 취약하고 오류가 발생하기 쉬운 소스 코드 컨텍스트입니다. 실용적인 사용을 권장하지 않으며 학문적, 오락적 목적으로만 고려하시기 바랍니다.
위 내용은 Python의 함수 인수에서 원래 변수 이름을 추출할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Tomergelistsinpython, youcanusethe operator, extendmethod, listcomprehension, oritertools.chain, 각각은 각각의 지위를 불러 일으킨다

Python 3에서는 다양한 방법을 통해 두 개의 목록을 연결할 수 있습니다. 1) 작은 목록에 적합하지만 큰 목록에는 비효율적입니다. 2) 메모리 효율이 높지만 원래 목록을 수정하는 큰 목록에 적합한 확장 방법을 사용합니다. 3) 원래 목록을 수정하지 않고 여러 목록을 병합하는 데 적합한 * 운영자 사용; 4) 메모리 효율이 높은 대형 데이터 세트에 적합한 itertools.chain을 사용하십시오.

join () 메소드를 사용하는 것은 Python의 목록에서 문자열을 연결하는 가장 효율적인 방법입니다. 1) join () 메소드를 사용하여 효율적이고 읽기 쉽습니다. 2)주기는 큰 목록에 비효율적으로 운영자를 사용합니다. 3) List Comprehension과 Join ()의 조합은 변환이 필요한 시나리오에 적합합니다. 4) READE () 방법은 다른 유형의 감소에 적합하지만 문자열 연결에 비효율적입니다. 완전한 문장은 끝납니다.

pythonexecutionissprocessoftransformingpythoncodeintoExecutableInstructions.1) the -interreadsTheCode, ConvertingItintoByTecode, thethepythonVirtualMachine (pvm)을 실행합니다

Python의 주요 특징은 다음과 같습니다. 1. 구문은 간결하고 이해하기 쉽고 초보자에게 적합합니다. 2. 개발 속도 향상, 동적 유형 시스템; 3. 여러 작업을 지원하는 풍부한 표준 라이브러리; 4. 광범위한 지원을 제공하는 강력한 지역 사회와 생태계; 5. 스크립팅 및 빠른 프로토 타이핑에 적합한 해석; 6. 다양한 프로그래밍 스타일에 적합한 다중-파라 디그 지원.

Python은 해석 된 언어이지만 편집 프로세스도 포함됩니다. 1) 파이썬 코드는 먼저 바이트 코드로 컴파일됩니다. 2) 바이트 코드는 Python Virtual Machine에 의해 해석되고 실행됩니다. 3)이 하이브리드 메커니즘은 파이썬이 유연하고 효율적이지만 완전히 편집 된 언어만큼 빠르지는 않습니다.

USEAFORLOOPHENTERATINGOVERASERASERASPECIFICNUMBEROFTIMES; USEAWHILLOOPWHENTINUTIMONDITINISMET.FORLOOPSAREIDEALFORKNOWNSEDINGENCENCENS, WHILEWHILELOOPSSUITSITUATIONS WITHERMINGEDERITERATIONS.

Pythonloopscanleadtoerrors likeinfiniteloops, modifyinglistsdizeration, off-by-by-byerrors, zero-indexingissues, andnestedloopineficiencies.toavoidthese : 1) aing'i


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!