История изменений
Исправление 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