Python: Как я могу импортировать все переменные?

Тревор Ховард имеет несколько категорий UIImage , которые прекрасно справляются с изменением размера. Если ничего другого, вы можете использовать код в качестве примера.

Примечание. Начиная с iOS 5.1, этот ответ может быть недействительным. См. Комментарий ниже.

35
задан 7 July 2009 в 09:22
поделиться

4 ответа

Вы сами дали решение: из импорта * будет работать нормально. Python не делает различий между функциями и переменными в этом отношении.

>>> from a import *
>>> if name == "Michael" and age == 15:
...     print('Simple!')
...
Simple!
63
ответ дан 27 November 2019 в 06:28
поделиться

Как говорили другие,

from module import *

также будет импортировать переменные модулей.

Однако вы должны понимать, что вы не импортируете переменные, а просто ссылки на объекты. Назначение чего-то еще импортированным именам в импортирующем модуле не повлияет на другие модули.

Пример: предположим, что у вас есть модуль module.py , содержащий следующий код:

a= 1
b= 2

Затем у вас есть два других модуля, mod1.py и mod2.py , которые выполняют следующие функции:

from module import *

В каждом модуле два имени, a и b создаются, указывая на объекты 1 и 2 соответственно.

Теперь, если где-то в mod1.py вы назначаете что-то еще глобальному имени a :

a= 3

имя a в module.py и имя a в mod2.py по-прежнему будут указывать на объект 1 .

Таким образом, из импорта модуля * будет работать, если вам нужны глобальные объекты только для чтения, но не будет работать, если вы хотите глобальные объекты для чтения и записи. В последнем случае лучше просто импортировать import module , а затем либо получить значение ( module.a ), либо установить значение ( module.a =… ) с префиксом модуля.

t работает, если вам нужны глобальные файлы для чтения и записи. В последнем случае лучше просто импортировать import module , а затем либо получить значение ( module.a ), либо установить значение ( module.a =… ) с префиксом модуля.

t работает, если вам нужны глобальные файлы для чтения и записи. В последнем случае лучше просто импортировать import module , а затем либо получить значение ( module.a ), либо установить значение ( module.a =… ) с префиксом модуля.

13
ответ дан 27 November 2019 в 06:28
поделиться

Вы не сказали этого прямо, но я предполагаю, что у вас возникли проблемы с манипулированием этими глобальными переменными.

Если вы управляете глобальными переменными изнутри функции, вы должны объявить them global

a = 10
def x():
   global a
   a = 15

print a
x()
print a

Если вы этого не сделаете, то a = 15 просто создаст локальную переменную и присвоит ей 15, а глобальная a останется 10

8
ответ дан 27 November 2019 в 06:28
поделиться

Вот что я бы сделал: Используйте свежий клон ревизии подсказки.

hg backout --merge -r revision_where_the_change_happened

, чтобы объединить обратные изменения в рабочая копия.

Теперь скопируйте рассматриваемый файл в вашу обычную рабочую копию и зафиксируйте

hg commit -m "Reversed the changes to file.h made in revision bla"

и выбросьте созданный вами выше клон.

Таким образом, mercurial не знает, что существует связь между revision_where_the_change_happened и этот коммит. Если вы хотите, чтобы Меркуриал запомнил это, вместо этого выполните

hg revert {all files except the one in question}

после слияния обратной фиксации с рабочей копией и перед фиксацией. Для второго способа вам не нужно работать с клоном, потому что вы хотите сохранить обратную фиксацию.

Я предполагаю, что выбор того, какой способ вы используете, зависит от того, насколько велика часть набора изменений. изменение файла было.

Форма from [module] import [identifiers] является более перспективной, поскольку вы можете легко увидеть, когда один импорт будет перекрывать другой.

Также обратите внимание, что «переменные» не отличаются от функций в Python с точки зрения их адресации - каждый идентификатор, например name или sayBye , указывает на какой-то объект. Идентификатор name указывает на строковый объект, sayBye указывает на функциональный объект, а age указывает на целочисленный объект. Когда вы говорите Python:

from a import name, age

, вы говорите «возьмите те объекты, на которые указывает имя и возраст в модуле a , и укажите на них в текущем область с теми же идентификаторами ».

Аналогичным образом, если вы хотите указать на них с разными идентификаторами при импорте, вы можете использовать форму

from a import sayBye as bidFarewell

. Указывается тот же функциональный объект, за исключением того, что в текущей области идентификатор, указывающий на него, - bidFarewell , тогда как в модуле a идентификатор, указывающий на него, - sayBye .

34
ответ дан 27 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: