Почему я не могу использовать vars () внутри моей функции для переменной, которая находится вне моей функции? - PullRequest
1 голос
/ 19 мая 2019

Я сделал функцию с именем translate(x).Вне этой функции я создал переменную с именем korean.Я хочу вызвать мой korean с помощью функции vars()[].Но вместо успешной компиляции произошла ошибка.

korean = 'ko-KR'
lgf = 'korean'
def translate(x):
     lgfn = vars()[x]
     return lgfn;

translate(lgf)

Я думал, что результат будет 'ko-KR', но после его компиляции он возвращает keyError: 'korean'

Ответы [ 2 ]

2 голосов
/ 19 мая 2019

Как предлагается в комментариях, здесь нет необходимости vars().Простого словаря будет достаточно

def translate(key):
    #Return value for a given key
    dct = {'korean': 'ko-KR'}
    return dct[key]

print(translate('korean'))

Вывод будет

ko-KR
0 голосов
/ 19 мая 2019

вы должны использовать globals вместо

korean = 'ko-KR'
lgf = 'korean'
def translate(x):
     lgfn = globals()[x]
     return lgfn;

print(translate(lgf))

выход ko-KR

Есть несколько способов получить переменные окружения:

  • globals () дает словарь глобальных переменных
  • местные жители () дает словарь локальных переменных

var () в вашем случае будет работать как localals (), это даст вам переменные в вашей области действия функции. тогда как глобальные содержат все глобальные функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...