函数也是对象
运行def后,会在堆里创建一个函数对象(参数、函数名等),栈中保存了一个函数名对象,值为该函数的地址
函数名+括号(),表示调用。创建一次后可以多次调用。
def test01() >>>c=test01
赋值后c也拥有test01函数的地址
可以直接调用,如c(),且print(type(c))=function
变量的作用域变量起作用的范围称作作用域,分为全局变量和局部变量
全局变量需要用(global)声明,尽量不使用,二者冲突时会使用局部变量
局部变量都在栈帧中,调用后就扔掉
如果要在函数内改变全局变量的值,增加global语句
print(globals())#打印输出全局变量
print(locals())#打印输出局部变量
eval()函数将字符串str当作有效表达式来求值返回计算结果
可以执行字符串,特别是外部传入的字符串
递归函数递归函数是指:自己调用自己的函数(先进后出,后进先出)
必须包含两个部分:
1.终止条件
2.对应关系



