Python之变量作用域及递归使用

Python文章为基础篇,主要提供给基础生查看资料学习使用!本博主的主要方向为网络安全,讲解黑客技术。后期在制作黑客工具时,会用到Python这门语言。所以,在此提供一些基础的Python知识!

在讲作用域之前,你首先要明白的是变量一词。你接触过也好,没接触过也罢。变量在程序中处于一个不可替代的位置。但你能给变量一词做个准确的定义吗?

变量可理解为指向值的名称。例如,执行赋值语句 name = ‘Honker’ ,这时名称name就指向字符串‘Honker’ ,想要使用Honker这个字符串时,用name即可。就像字典中的键值对一样,每一个键都指向自己的一个值。

一、变量作用域

全局变量:

name = 'Honker'
def demo():
     age = 20
     print('{},{}'.format(name,age))
demo()
print('Hello,{}'.format(name))

在这里插入图片描述
在上面示例中,name为一个全局变量。所谓全局变量,就是整个代码文件各处都能使用。定义了一个全局变量name,在函数demo中使用,也可以在函数外使用!
全局变量很好理解,也没什么需要注意的地方。最容易出错的地方就是局部变量,因为一旦位置使用错误就会造成错误。

局部变量:

name = 'Honker'
def demo():
     age = 20
     print('{},{}'.format(name,age))
demo()

print('Hello,{}.I am {}'.format(name,age))

在这里插入图片描述
还用刚才的小示例,age 是在函数demo内定义的一个局部变量,适用范围只限定在函数体内,一旦出了函数体,便是未定义。所以,在使用局部变量时,一定要小心!

再举一个示例:

def demo():
     for i in range(0,10):
         sum = i+1
         print(sum,end=' ')
     x = 30
     print(x+i)

demo()

在这里插入图片描述
在这个demo函数里,变量i是在for循环里面定义的,也是一个局部变量,但是你可以清楚的看到,在for循环之外demo函数里面,变量i同样能够使用!

二、递归

简单的来说,递归算法就是函数自己调用自己的一个过程。

求某一个数的阶乘:

def demo(n):
    if n==1:
        return 1
    return n*demo(n-1)
x = demo(5)
print(x)

在这里插入图片描述
就像上面例子一样,递归用法,demo函数调用自己,唯一不同的就是参数有所改变。因为在递归算法中,是函数调用自己,如果不改变参数的值使其停止下来,那这就是严重的错误!

在阶乘递归算法中,停止调用自己的条件就是参数为1时,返回一个具体的值,而不是返回一个未知数!

递归算法在很多事例中都可以使用,并且简单易懂。最为有特点的就是代码简单。即使在比较麻烦的问题当中,认真思考,递归的算法思路还是挺简单的。

到这里,这篇基础文章就介绍完啦,如有出入或不足的知识点,欢迎下方评论补充!

往期推荐:

1. Python之自定义函数及参数
2. Python之del语句、exec、eval语句、pass语句及三个引号的用法!
3. Python之代码块、条件语句、循环语句

在这里插入图片描述

发布了67 篇原创文章 · 获赞 95 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43729943/article/details/104482629
今日推荐