Как получить доступ к переменной внутри функции - PullRequest
2 голосов
/ 08 июля 2019

Структура файла:

def mainStuff():
  for a in aa:
    aName = aa[a].split('')[-1].split('-')[5]

   # Do other important stuff so I can't return early

def replaceOne():
  if aName.split('_')[1] == "android":
    aName = aName.replace('_android','Android')

  return aName

def replaceTwo():
  if aName.split('_')[4:7] == "abc":
    aName = aName.replace('abc','Tom')

  return aName

Я хочу, чтобы два блока операторов if выполнялись последовательно, поэтому я решил поместить их в отдельные функции.Однако, поскольку aName генерируется при запуске цикла, мои функции не могут получить переменную.Я не могу использовать return, так как функция должна работать до своего завершения, чтобы мой вывод работал.

Я пытался использовать yield, но функция просто преждевременно заканчивается.

Как мне получить aName и передать его через другие мои функции?

1 Ответ

1 голос
/ 08 июля 2019

Вам нужно передать aName вашим функциям параметр. См. Раздел параметров в этого руководства . В вашем случае попробуйте изменить свой код следующим образом:

def mainStuff():
    for a in aa:
        aName = aa[a].split('')[-1].split('-')[5]
        aName = replaceOne(aName)
        aName = replaceTwo(aName)

def replaceOne(aName: str) -> str:
    if aName.split('_')[1] == "android":
        aName = aName.replace('_android','Android')
    return aName

def replaceTwo(aName: str) -> str:
    if aName.split('_')[4:7] == "abc":
        aName = aName.replace('abc','Tom')
    return aName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...