Если ваш запрос поиска неизменен, самый простой способ - просто сделать его переменной области видимости модуля. то есть:
lookup = {
'A' : 'AA',
'B' : 'BB',
...
}
Если вам может потребоваться внести изменения, а затем повторно инициализировать их, вы можете сделать это в функции инициализации:
def initLookups():
global lookup
lookup = {
'A' : 'AA',
'B' : 'BB',
...
}
(Либо lookup.update ({'A': 'AA', ...}), чтобы изменить диктовку на месте, затрагивая всех абонентов, имеющих доступ к старой привязке.)
Однако, если у вас есть эти поиски в каком-то стандартном формате, может быть проще просто загрузить их из файла и создать из него словарь.
Вы можете организовать свои функции по своему желанию. Единственное правило в отношении упорядочения состоит в том, что переменные, к которым осуществляется доступ, должны существовать в то время, когда функция называется - хорошо, если функция имеет ссылки на переменные в теле, которые еще не существуют, если на самом деле ничего нет пытается использовать эту функцию. то есть:
def foo():
print greeting, "World" # Note that greeting is not yet defined when foo() is created
greeting = "Hello"
foo() # Prints "Hello World"
Но:
def foo():
print greeting, "World"
foo() # Gives an error - greeting not yet defined.
greeting = "Hello"
Еще одна вещь, которую стоит отметить: ваша функция getlookup очень неэффективна. Использование «if name in lookup.keys()
» фактически приводит к получению списка ключей из dict, а затем перебирает этот список, чтобы найти элемент. Это теряет все преимущества производительности, которые дает dict. Вместо этого "if name in lookup
" позволит избежать этого или, что еще лучше, использовать тот факт, что .get
может быть предоставлено значение по умолчанию для возврата, если ключ отсутствует в словаре:
def getlookup(name)
return lookup.get(name, "")