today 不记得学了多少天了今天函数的深入

首先就是昨天函数的一点补充

#_author: "PXH"
#date:2018/7/29 0029
#高阶函数


def mul(a):
    Sum = a*a
    return Sum

def bar(a,b,func):
    c = func(a) + func(b)
    return c

print(bar(1,2,mul))
#函数的参数可以为函数名

def test_1():

    def test_2():
        c = 5
        return c
    return test_2()


print(test_1())
#函数可以被赋值

递归

#_author: "PXH"
#date:2018/7/29 0029
#实现阶乘
def factorial(num):
    sum_1 = 1
    for i in range(1,num+1):
        sum_1 *= i
    return sum_1
print(factorial(5))
#使用递归来实现阶乘
#递归能实现的循环都可以实现,但是效率不高,可以简化思路
def factorial(num):
    if num == 1:
        return 1
    return num*factorial(num-1)
print(factorial(5))
# 使用递归实现菲薄数列
# fibo(1) = 0
# fibo(2) = 1
# fibo(3) = 1
# fibo(4) = 2
# fibo(5) = 3
# fibo(6) = 5
# fibo(7) = 8 。。。。。。。
#递归版
def fibo_1(n):
    if n == 1 or n == 2:
        return n - 1
    return fibo_1(n-1) + fibo_1(n - 2)

print(fibo_1(8))
#普通版
def fibo_2(n):
    before = 0
    after = 1
    if n == 1 or n == 2:
        return n - 1
    for i in range(n - 2):
        Sum = after + before
        before = after
        after = Sum
    return Sum

print(fibo_2(100))

内置函数举例了几个典型重点

#_author: "PXH"
#date:2018/7/29 0029

print(all([1,2,3]))
print(eval("1+2*3"))
#简单过滤器
str = ["s","a","x","l"]
def funl(s):
    if s != "a":
        return s

data = filter(funl,str)
print(list(data))
#map()用法差不多但是适用于相加要想过滤请用filter()这么用是为了把参数放到迭代器中节省资源
str = ["s","a","x","l"]
def funl(s):
        return s+"avel"

data = map(funl,str)
print(list(data))
from functools import reduce
def add(x,y):
    return x+y
print(reduce(add,range(1,10)))
#lambda a,b:a+b 匿名函数
#阶乘变形高大上版函数式编程
from functools import reduce
print(reduce(lambda x,y:x*y,range(1,5+1)))

OK今天又过去了大家好好复习哦

猜你喜欢

转载自www.cnblogs.com/pxhbk/p/9386757.html