python基础--06变量与递归函数

变量:

局部变量:在子程序中定义的变量

全局变量:在程序一开始定义的变量

全局变量作用域是整个程序
局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
所以我们写程序时,用大写表示全局变量,用小写表示局部变量
 
如果函数的内容无global关键字:
1.有声明局部变量
NAME="小仙女"
def test1():
    NAME="小可爱"
    print("我是",NAME)
test1()
View Code

2.无声明局部变量

NAME="小仙女"
def test1():
    print("我是",NAME)
test1()
View Code

如果函数的内容有global关键字

1.有声明局部变量

NAME="小仙女"
def test1():
    global NAME
    NAME="小可爱"
    print("我是",NAME)
test1()
View Code

2.无声明局部变量

NAME="小仙女"
def test1():
    global NAME
    print("我是",NAME)
test1()
View Code

前向引用:函数即变量

正确的例子:

def action():
    print ('in the action')
    logger()
def logger():
     print ('in the logger')
action()
View Code
def logger():
    print ('in the logger')
def action():
    print('in the action')
    logger()
View Code

嵌套函数与作用域:

嵌套函数(注意执行的顺序)

name="alex"
def name1():
    name="baby"
    def name2():
        name="vera"
        print(name)
    name2()
    print(name)
name1()
print(name)
View Code

作用域

name='alex'
def name1():
    name="baby"
    def name2():
        print(name)
    return name2()
test=name1()
View Code

递归函数:

def calc(n):
    print(n)
    if int(n/2) ==0:
        return n
    return calc(n/2)

calc(10)
View Code

特征:

1. 必须有一个明确的结束条件

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

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

猜你喜欢

转载自www.cnblogs.com/sakura-gyt/p/12700933.html