Я знаю, что делает argv, но мне трудно понять, как вызвать этот элемент модуля sys?
Я думаю, вы имеете в виду что , чтобы называть argv, а не как его называть. Это не вызывается. Вот как вы можете доказать это в python.
>>> import sys
>>> callable(sys.argv)
False
Теперь, как упоминалось выше, unutbu загружает модуль sys, предполагая, что он еще не загружен. Что это значит? Хорошо, когда вы импортируете модуль, он добавляется в словарь в sys с именем sys.modules.
>>> import sys
>>> print sys.modules.keys
['copy_reg', 'encodings', 'site', '__builtin__', '__main__', 'encodings.encodings', 'abc', 'posixpath', 'errno', 'encodings.codecs', '_abcoll', 'types', '_codecs', '_warnings', 'genericpath', 'stat', 'zipimport', 'encodings.__builtin__', 'warnings', 'UserDict', 'encodings.utf_8', 'sys', 'codecs', 'readline', 'os.path', 'signal', 'linecache', 'posix', 'encodings.aliases', 'exceptions', 'os']
Словарь sys.modules предотвращает перезагрузку модуля. Оператор импорта проверяет sys.modules, чтобы предотвратить перезагрузку модуля.
Если вы действительно увлечены модулем, взгляните на список sys.builtin_module_names.
Если вы взламываете скрипт и хотите немедленно внести изменения в интерпретатор, перезагрузите скрипт.
>>> reload(sys)
>>> help(reload)
Help on built-in function reload in module __builtin__:
reload(...)
reload(module) -> module
Reload the module. The module must have been successfully imported before.
Итак, у вас есть больше, чем вы когда-либо хотели знать о модулях и атрибутах модулей: D.