python代码的执行不依赖于main函数;
python代码从没有缩进的代码开始执行。
区分:主执行文件、被调用文件
def foo():
str="function"
print(str)
if _name_ =="_main_":
print("main")
foo()
如果这个文件被别的文件当作模块调用时,此时name的值为文件的名字,否则默认值为main。
1、python没有块级作用域。代码块里的变量外部可以调用。
2、局部作用域:函数是个单独的作用域,python中没有块级作用域,但是有局部作用域。
3、作用域链:python中有作用域链,变量会由内到外找,先去自己作用域去找,自己没有再去上级去找,直到找不到报错。
例:
name="lzl"
def f1():
print(name)
def f2():
name="eric"
return f1
ret=f2()
ret()
#输出:lzl
分析:f2()执行结果为函数f1的内存地址,即ret=f1;执行ret()等同于执行f1(),执行f1()时与f2()没有任何关系,name="lzl"与f1()在一个作用域链,函数内部没有变量是会向外找,所以此时变量name值为"lzl";
记住:函数在未执行之前,作用域已经形成,作用域链也已经生成。