关于函数:
1、函数在执行def语句时定义,也就是说函数对象是在执行def语句时实时生成的,在此之前并不存在。
2、def语句里面只是定义了函数的内容,而没有执行其中的代码,函数的代码只在函数调用时才执行。
例1:
def f1():
def f1():
print "hello"
f1()
f1()
输出:hello
关于作用域:
1、变量的作用域完全由变量被赋值的位置决定。
例2:
x=99
def func():
print x
x=88
func()
会报错!
2、对于嵌套函数,当在内部函数中使用变量时,若内部函数命名空间中不存在该变量,会到上层函数中搜索。注意是在运行时搜索,而不是内部函数定义时用外层函数中变量的值替换。
例3:
def f1():
x=88
def f2():
print x
x=99
f2()
f1()
输出:99
例4:
def f1():
x=88
def f2(x=x):
print x
x=99
f2()
f1()
输出:88