当前位置: 首页 > 后端技术 > Python

Python入门篇(十七):基本数据类型(函数)(下)

时间:2023-03-26 11:16:45 Python

人生苦短,我选择Python。(上)小白学Python(三):基本数据类型(下)小白学Python(四):变量的基本运算小白学Python(五):基本运算符(上)小白学Python(六):基本运算符(下)Python初学者学习(七):基本过程控制(上)Python初学者学习(八):基本过程控制(下)Python初学者学习(九):基本数据结构(列表)(下)1))小白学习Python(十):数据结构基础(列表)(下)小白学习Python(十一):数据结构基础(元组)小白学习Python(十二):数据结构基础(字典)(上)学习Python初学者入门(13):数据结构基础(词典)(下)Python入门入门(14):数据结构基础(集)(上)Python入门入门(15):数据结构基础(集)(下)2))小白学Python(十六):基本数据类型(函数)(上)变量作用域变量的作用域是指变量命名的作用域程序。不明白?没关系,还是写个例子慢慢品味吧。a=0defprint_1():a=1print('a=',a)defprint_2():a=2print('a=',a)print_a()显示结果如下:a=1in上面的例子a中,我们进行了3次赋值,但是注意这不是一次赋值覆盖,而是每次赋值的作用域不同。对a的第一个赋值是最外层的。这称为全局变量,这意味着它的作用域是全局的。我们可以在世界任何地方使用a来获取这个值。第二个赋值,a在print_1()函数中,我们调用print_1()函数,所以这里的赋值才会生效。第三次赋值是在print_2()函数中,我们没有调用这个函数,所以这里的a赋值不会生效。例如,我们可以这样打印:a=0defprint_1():a=1print('a=',a)defprint_2():a=2print('a=',a)print('a=',a)打印结果如下:a=0这时候我们就把这个全局变量打印出来。方法中的第二个和第三个a成为局部变量。这两个a只在当前函数内有效,在本函数外不会生效。如果我们注释掉局部变量中的赋值,是否可以在函数中获取到全局变量的值呢?答案当然是肯定的,我们试试:a=0defprint_1():#a=1print('a=',a)defprint_2():a=2print('a=',a)print_a()打印结果如下:a=0我们可以做一点改动,在函数print_1()中调用函数print_2(),如下:a=0defprint_1():#a=1print('a1=',a)defprint_2():a=2print('a2=',a)print_2()print('a3=',a)print_1()打印结果如下:a3=0a1=0a2=2这个例子添加a1,a2,a3只是为了方便打印后识别,并不是这三个变量。注意:内层函数的变量作用域仅限于内层函数,不会覆盖外层函数。匿名函数是的,你没有看错,函数是可以匿名的。当我们需要使用匿名函数时,可以使用lambda关键字来声明匿名函数。lambda只是一个表达式,函数体比def要简单的多。lambda的主体是一个表达式,而不是代码块。lambda表达式只能封装有限的逻辑。lambda函数有自己的命名空间,不能访问自己的参数列表之外或全局命名空间中的参数。语法:函数对象名=lambda形参:表达式下面写一个简单的匿名函数给大家体验一下:add=lambdax,y:x+yprint(add(1,2))打印结果如下:3这里是实现上我们上篇最简单的加法,如果写的稍微复杂一点,比如加一个逻辑判断:max_num=lambdax,y:xifx>=yelseyprint(max_num(5,9))的打印结果如下:9建议:当函数比较复杂时,不建议使用匿名函数,因为只能一行,写起来难,同时也难读。结构不详。如果复杂的业务逻辑,匿名函数会让写的人怀疑生,读的人生不如死。热爱生活,请远离匿名函数。递归函数一个函数可以调用另一个函数,如果这个函数调用自己,那么这就称为递归函数。现在如果我们求n的阶乘:别告诉我你不知道阶乘是什么,也许你需要回去问问你的初中数学老师。n!=1*2*3*...*n我明白了,哇,想想代码怎么写。如果你想不通,让我们看看我写的:deffactorial(n):ifn==1:return1returnn*factorial(n-1)print('Thefactorialof10is:',factorial(10))打印结果:10的阶乘为:3628800希望各位同学一定要自己敲代码。示例代码本系列所有代码编辑器都会放在代码管理仓库Github和Gitee上,方便大家使用。示例代码-Github示例代码-Gitee如果我的文章对你有帮助,请扫码关注作者的公众号:获取最新干货推送:)