LINUX.ORG.RU

История изменений

Исправление micronekodesu, (текущая версия) :

'foo' in globals()

Нет, так не будет работать, потому что он смотрит в globals импортируемого модуля:

$ cat globalscheck.py 
#!/usr/bin/env python3

print('foo' in globals())

$ python3
>>> foo = 'bar'
>>> import globalscheck
False
>>> 'foo' in globals()
True

Ну и даже если определить в импортируемом модуле второй модуль этого не увидит.

Первый код вообще не понял. Если это попытка сделать в одну строку то тогда

foo = sys.modules['__main__'].foo if 'foo' in dir(sys.modules['__main__']) else 'bar'

sys.modules['__main__'].foo = foo

Исходная версия micronekodesu, :

'foo' in globals()

Нет, так не будет работать, потому что он смотрит в globals импортируемого модуля:

$ cat globalscheck.py 
#!/usr/bin/env python3

print('foo' in globals())

$ python3
>>> foo = 'bar'
>>> import globalscheck
False
>>> 'foo' in globals()
True

Ну и даже если определить в импортируемом модуле второй модуль этого не увидит.

Первый код вообще не понял. Если это попытка сделать тернарный оператор то тогда

foo = sys.modules['__main__'].foo if 'foo' in dir(sys.modules['__main__']) else 'bar'

sys.modules['__main__'].foo = foo