12. Python脚本学习笔记十二作用域与递归

来源:互联网 发布:vue js 折叠面板例子 编辑:程序博客网 时间:2024/06/05 06:35

12. Python脚本学习笔记十二作用域与递归

本篇名言:“面对困难,微笑含着勇敢;面对挫折,微笑带着自信;面对误解,微笑露出宽容;面对冷漠,微笑洋溢热情;面对爱情,微笑代表真心。愿你微笑面对人生。”

1.  作用域  

Python 有个内建的vars函数可以返回变量字典。如下:

                  >>>x=1

>>> scope=vars()

>>> scope['x']

1

>>> scope['x']+=1

>>> scope['x']

2

                  这个字典叫做命名空间或者作用域。

                  每个函数调用都会创建一个新的作用域。

deffoo():

    x=42

    print x

 

x=1

foo()

print x

输出如下:

42

1

可以通过函数globals函数获取全局变量值。

如下:

>>> x=1

>>> globals()['x']

1

如果想在函数中引用全局变量,可以通过 global x引用。

 

2.  递归

函数可以调用自身。就可以简单理解成递归调用。

2.1      阶乘

什么是阶乘 蛤蟆就不说了,不知道就去看下高中数学。

正常版本实现如下:

deffactorial(n):

    result=n

    for iin range(1,n):

        result *= i

    return result

 

 

print factorial(3)

递归实现:

deffactorial(n):

    if n ==1:

        return1

    else:

        return n*factorial(n-1)

 

print factorial(3)

 

 

 

2.2      幂

递归实现如下:

defpower(x,n):

    if n==0:

        return1

    else:

        return x*power(x,n-1)

print power(2,4)

 

递归可以用循环来替换的,但是在多数情况下,递归更加易读,有时会大大提高可读性。

 

原创粉丝点击