一、lambda表达式
▲ 掌握lambda表达式的作用和应用场景/掌握其各种应用技巧
匿名函数概述
Python 使用lambda来创建匿名函数。
●lambda只是一个表达式,函数体比def简单很多。
●lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
●lambda函数拥有自己的命名空间,且不能访问私有参数列表之外或全局命名空间里的参数。
●lambda函数看起来好像只能写一行,其真正的目的是为了简化代码。
语法: lambda函数的语法只包含一个语句-->
lambda [arg1[,arg2,.....argn]]:表达式
匿名函数lambda语法
语法: lambda函数的语法只包含一个语句
示例:计算两个整数的和
ch07-demo01-lambda-basic.py
lambda的表达式应用
示例1:使用内置函数作为表达式
ch07-demo02-lambda-advance.py
示例2:使用自定义函数作为表达式
ch07 -demo02-lambda-advance.py
示例3 :使用推导式作为表达式
ch07-demo02-lambda-advance.py
变量作用域.
一个程序的所有的变量并不是在哪个位置都可以访问的。
访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序你可以访问哪个特 定的变量名称。
两种最基本的变量作用域如下:
①全局变量
②局部变量
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域 ,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问
全局变量可以在整个程序范围内访问。
全局变量想作用于函数内,需加global
示例(
ch07-demo05-variable-scope02.py
1、global---将变量定义为全局变量。 可以通过定义为全局变量,实现在函数内部改变变量值。
2、-个global语句可以同时定义多个变量,如global x, y, z。
二、递归Recursion (扩展)
掌握了解递归的基本工作模式和应用方法
递归的实现
递归:在调用一个函数的过程中,直接或间接地调用了函数本身这个就叫递归
直接调用自身函数的示例
ch07-demo06-variable-scope02.py
间接调用自身函数的示例
ch07-demo06-variable-scope02.py
问题:
能告诉我一下代码运行的结果吗 ?
示例
ch08-demo06-variable-scope02.py
递归运行说明:
age(5)=age(4)+2 第一次进入
age(4)=age(3)+2 第二次进入
age(3)=age(2)+2 第三次进入
age(2)=age(1)+2 第四次进入
age(1)=18 第五次进入,最后判断终止条件
▲ 示例1 :递归实现阶乘
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
举个例子,我们来计算阶乘n!= 1 *2* 3* .. *n,用函数factorial(n)表示,可以看出:factorial(n)=n!= 1*2*3*... *(n-1)*n= (n-1)!*n= fact(n-1)*n
所以, factorial(n)可以表示为n * factorial(n-1) ,只有n= 1时需要特殊处理。于是, factorial(n)用递归的方式写出来就是:
示例
ch07-demo07-recursion-factorial.py
▲ 示例2 :递归实现遍历指定文件或磁盘的检索
前置知识补充:
os.listdir(filePath)返回一个列表对象,存放指定路径下的所有文件夹或文件名称
os.path.join(filePath, fi)文件路径拼接
os.path.isdir(fi_ d)判断当前路径是否为一个文件夹
os.sep()系统分隔符
示例
ch07-demo08-recursion-dirs.py
网友评论