Python基础-作用域、局部变量及递归 | 【韩涛博客】

Python基础-作用域、局部变量及递归

Python基础-作用域、局部变量及递归

局部变量:只在当前函数中生效,对全局变量无法造成影响

作用域:局部变量所在区域

全局变量:在程序的最顶层进行定义

如果想要在函数中的局部变量修改全局变量,需要提前声明使用: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

递归特性:

1. 必须有一个明确的结束条件,不然会死循环

2. 每次进入更深一层递归时,要相比上次递归都应有所减少

3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

广告

发表评论 取消回复
表情 图片 链接 代码

分享
×
订阅图标按钮