局部变量:只在当前函数中生效,对全局变量无法造成影响
作用域:局部变量所在区域
全局变量:在程序的最顶层进行定义
如果想要在函数中的局部变量修改全局变量,需要提前声明使用:global 变量 再进行修改
注:列表,字典,集合,类都是可以直接修改的
eg1:
name=ht#全局变量
def change_name(name):
global name#声明要修改全局变量
name=hunter
print("before change_name",name)
print("after change_name",name)
------------------------------------------------
name="hantao"
change_name(name)
eg2:
name=["hantao","ht","hunter"]
def change_name(name):
name[0]="韩涛"
print("name:",name)
------------------------------------------------
change_name
print(name)
递归:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
def calc(n):
print(n)
if int(n/2) ==0:
return n
return calc(int(n/2))
calc(10)
输出:
10
5
2
1
递归特性:
- 必须有一个明确的结束条件,不然会死循环
- 每次进入更深一层递归时,要相比上次递归都应有所减少
3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)