Просто создайте внутри себя диктовку и верните ее из функции:
def get_dic(file):
phone = {}
names = None
for line in file.readlines():
if line[0] == '#':
names = line.strip()
phone[names] = ""
else:
phone[names] += line.strip()
return phone
argentina = get_dic(open(sys.argv[1],'r'))
AppDomains лучше всего визуализировал как процесс очень легкого веса.
может быть AppDomains N на.Net Process, но вообще говоря, существует только один. Реальное преимущество AppDomains, они обеспечивают границу изоляции в рамках Вашего процесса. Объекты могут только говорить друг с другом через границу AppDomain через дистанционную работу или сериализацию.
также возможно выполнить 2 AppDomains на совершенно других уровнях безопасности в рамках процесса. Это может позволить Вам запускать свое главное приложение в Полном Доверии при выполнении Недоверяемых Плагинов на намного более низком доверительном уровне.
Это твердо к слою, сказали да или нет тому, уважает ли поток AppDomain. Для единственного потока возможно быть в другом AppDomains N. Такая ситуация возможна, если объект в одном AppDomain выполняет удаленный вызов к объекту в другом AppDomain. Поток должен будет перейти между AppDomains для завершения.
недостаток AppDomains является главным образом сложностью. Дистанционная работа может занять определенное время для получения головы вокруг, и правильно установка AppDomain может быть нетривиальным процессом.
можно хотеть посмотреть через документацию MSDN относительно AppDomains. Трудно найти succint учебное руководство, которое описывает их, потому что у них есть множество сложных функций. Это предоставляет хороший обзор, который, если он не отвечает на Ваш вопрос непосредственно, по крайней мере, укажет на Вас в правильном месте.
http://msdn.microsoft.com/en-us/library/cxk374d9.aspx
, Этот документ больше не сохраняется, относится к этому для обновленной версии: https://msdn.microsoft.com/en-us/library/2bh4z9hs (v=vs.110) .aspx
Ответ JaredPar хорош, кроме он не отмечает смысл существования для AppDomains - который является, что можно только РАЗГРУЗИТЬ блок путем разгрузки его AppDomain. Если Вы - продолжительный процесс ОС, и Вы ожидаете должными быть загружаться и затем позже разгружаться блоки по любой причине тогда, Вам нужен AppDomain. Формирующим прототип примером здесь является ASP.NET, который загружает блоки кода приложения по требованию и затем может разгрузить их позже, когда приложения активно больше не используются.
стоимость Вы платите за способность разгрузиться, то, что независимость - необходимо связаться через границу AppDomain, не Может выполнить вызов простого метода. Необходимо управлять жизненным циклом AppDomain. И т.д.
, Если просто необходимо динамично загрузить блоки и не думать, что необходимо будет разгрузить их во время жизни единственного процесса тогда, Вы, вероятно не делаете потребность выполнить несколько AppDomains. Хорошим примером здесь могло бы быть большое приложение, которое поддерживает сменную модель, где он пронюхивает сменные блоки в "и т.д." каталог и загружает их всех. Однако, если сменные образцовые призывы к разгрузке плагинов... хорошо.
существуют сценарии изолированной части. Как, предположите, что Вы хотите загрузить 2 различных версии блока одновременно. Можно столкнуться с ловушками, если Вы не выделяете их с AppDomains. Но это будет довольно редко.
базовый сценарий, который выравнивает по ширине существование AppDomains, является длительным процессом, который должен быть в состоянии разгрузить блоки.
, Конечно, приложения могли полагаться на процесс ОС, когда Вы хотите разгрузить блок. Другими словами, у Вас могло быть 3 или 4 выполнения процессов сотрудничества, каждый с его собственным набором блоков, и когда Вы хотите разгрузить блок, просто закрыть процесс, который размещает тот блок. Но AppDomain предлагает механизм более высокого перфекта, чтобы сделать это, не требуя, чтобы процесс остановился/начал или межпроцессный comms, который более тяжел все еще, чем перекрестный-AppDomain comms, описанный ранее. Я подразумеваю, что это - все еще дистанционная работа, но это медленнее и больше контекстного переключения.
Некоторые вещи можно сделать с AppDomains:
Проще говоря, это - граница безопасности и почти граница процесса. Насколько производительность идет, несколько AppDomains в рамках процесса не представляет значительные издержки. Запуск отдельного процесса вместо AppDomain является намного более дорогостоящим.