de alguna manera estaba sorprendido por el comportamiento siguiente:__main__ y de alcance en Python
def main():
print "%s" % foo
if __name__ == "__main__":
foo = "bar"
main()
es decir, un módulo de función tiene acceso a las variables que encierra en el __main__
. ¿Cuál es la explicación para eso?
No hay alcance '__main__'. Hay un 'si' que pasa al comparar una variable que pasa a llamarse' __name__' a algo que pasa a ser la cadena literal '" __main __ "'. – delnan
@delnan: '__main__' es un módulo, y cada módulo tiene un alcance asociado. Prueba 'import __main__; escriba (__ main __) 'en el intérprete (no en IPython). –
@Sven: Lo sé. OP debería saber en algún momento. Pero me pareció que OP en su lugar confunde las afirmaciones con partes de la condición y piensa que "si" introduce un nuevo alcance, que sería un problema más apremiante. (Es cierto que "no hay alcance" __main__ "es engañoso, en sentido estricto) – delnan