source

문자열에 지정된 변수의 이름을 가져오는 방법은 무엇입니까?

factcode 2023. 7. 18. 22:00
반응형

문자열에 지정된 변수의 이름을 가져오는 방법은 무엇입니까?

단순성을 위해 다음과 같은 작업을 수행할 수 있습니다.

def foo(a):
    # I want to print the value of the variable
    # the name of which is contained in a

PHP로 어떻게 하는지 알고 있습니다.

function foo($a) {
    echo $$a;
}

global $string = "blah"; // might not need to be global but that's irrelevant
foo("string"); // prints "blah"

이거 할 수 있는 방법은?

글로벌 변수인 경우 다음 작업을 수행할 수 있습니다.

>>> a = 5
>>> globals()['a']
5

다양한 "평가" 솔루션에 대한 참고 사항: 특히 평가 중인 문자열이 잠재적으로 신뢰할 수 없는 원본인 경우에는 eval에 주의해야 합니다. 그렇지 않으면 악의적인 문자열이 지정된 경우 디스크의 전체 내용을 삭제하게 될 수 있습니다.

글로벌하지 않은 경우 정의된 네임스페이스에 액세스해야 합니다.만약 당신이 그것을 가지고 있지 않다면, 당신이 그것에 접근할 수 있는 방법이 없습니다.

Edward Loper의 답변은 변수가 현재 모듈에 있는 경우에만 작동합니다.다른 모듈에서 값을 가져오려면 다음을 사용할 수 있습니다.getattr:

import other
print getattr(other, "name_of_variable")

https://docs.python.org/3/library/functions.html#getattr

문자열을 평가해도 안전하다는 것을 알고 있다고 가정하면, eval은 현재 컨텍스트에서 변수의 값을 제공합니다.

>>> string = "blah"
>>> string
'blah'
>>> x = "string"
>>> eval(x)
'blah'
>>> x=5
>>> print eval('x')
5

타다!

언급URL : https://stackoverflow.com/questions/9437726/how-to-get-the-value-of-a-variable-given-its-name-in-a-string

반응형