Python学习day14

s = input("请输入表达式:")  # 输入100 + 200 * 300
v = eval(s)  # 等同于 v = 100 + 200 * 300
print("您输入的表达式经过eval执行后结果为", v)

exec函数:
作用:
把一个字符串当成程序来执行
格式:
exec(source, globals=None, locals=None)
函数式编程:
是指用一系列函数解决问题
函数是一等公民(Guido)
函数本身可以赋值给变量,赋值给变量后绑定函数
允许将函数本身作为参数传入另一个函数
允许函数返回一个一个函数
好处;
用每一个函数完成细小的功能,一系列函数在任意组合可以完成大问题
函数的可重入性:
当一个函数在运行是不会读取和改变除局部作用域以外的变量时,此函数为可重入函数

高阶函数:high order function
满足下列条件中一个的函数即为高阶函数
函数接收一个或者多个函数作为参数传入
函数返回一个函数
python中内建的高阶函数:
map filter sorted
map 函数:
map(func, *iterables)用函数和对可迭代对象中的每一个元素作为返回新的可迭代对象,
当最短的一个可迭代对象不再提供数据时迭代结束
要求;

func函数接收的参数个数必须与可迭代对象的个数相同


filter 函数
格式 :
filter(function, iterable)
作用:
筛选可迭代对象iterable中的数据,返回一个可迭代对象,此可迭代对象将对iterable提供的数据进行筛选
说明:
函数function将对iterable中的每个元素进行求布尔值,返回True则保留,
返回False则丢弃


sorted 函数
作用:
将原来可迭代对象提供的数据进行排序,生成排序后的列表
格式:
sorted(iterable, key=None, reverse=False)
说明:
iterable可迭代对象
key函数是用来提供一个排序参考值的函数,这个函
数的返回值将作为排序的依据
reverse标志用来设置是否降序排序



递归函数 recursion
函数直接或者间接的调用自身
说明:
递归一定要控制递归的层数,当符合一定条件时要终止递归调用
几乎所有的递归都能用while循环来代替
优点:
递归可以把问题简单化,让思路更为清晰,代码更简洁
缺点:
递归因系统环境影响大,当递归深度太大时,可能会得到不可预知的效果
递归的两个阶段:
递推阶段:从原问题出发,按递归公式递推从未知到已知,最终达到递归的终止条件
回归阶段:按递归终止条件求出结果,逆向逐步代入递归公式,回归问题求解

示例:
写一个函数求n的阶乘(递归实现)
# 写一个函数求n的阶乘
# 1 * 2 * 3 * 4 * 5
# 等同于
# 5! = 5 * 4!
# 4! = 4 * 3!
# ...
# 2! = 2 * 1!
def myfac(n):
    if n == 1:
        return 1
    return n * myfac(n-1)
print('5的阶乘:', myfac(5))
递归的实现方法
先假设函数已经实现
练习:
写一个函数mysum(n),用递归方法求
1+2+3+……+n
def mysum(n):
if n == 1:
return 1
return n + mysum(n - 1)
print(mysum(100))
闭包 closure
闭包是指引用了此函数外部嵌套函数作用域变量的函数
闭包必须满足三个条件
必须有内嵌函数
内嵌函数必须引用外部函数中的变量
外部函数返回值必须是内嵌函数

# 一元二次方程
def f(a, b=None, c=None):
    def fn(x):
        return(a * x ** 2 + b * x + c)
    return fn
fn = f(1, 2, 3)
print(fn(1))
print(fn(20))

猜你喜欢

转载自blog.csdn.net/sinat_42311311/article/details/80903107