zoukankan      html  css  js  c++  java
  • python 函数(二)

    一、高阶函数

     1、函数名可以赋值
    2、函数名可以作为函数参数
    3、函数名可以作为函数的返回值
    eg:
    def f1(n):
        return n*n
    
    def f2(a, b, f):
        return f(a) + f(b)   # 此处f() 相当于 f1()
    
    num = f2(1, 2, f1)
    print(num)

    >>> 5

    二、递归函数

     1.自己调用自己;
     2.有一个结束条件;

    eg1: 递归求5!

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

    >>> 120

    eg2: 递归求斐波那契数列(输入位数,输出该位置所对应的值)

    斐波那契数列:  0  1  1  2  3  5  8  13  21  34  55(从0、1开始,后面的任意一个数为她前面两个数的和)
    def fibo(n):
        if n <= 1:
            return 1
        return fibo(n-1) + fibo(n-2)
    
    
    print(fibo(8))     # 输出斐波那契数列的第8个数(是从0开始计数的)

    >>> 21

    三、内置函数

    1.all() 函数

    all()  # 如果括号里面的内容为真,返回True,否则返回False

    2.eval() 函数 

    eval()     # 相当于一个计算器,在括号里面直接输入要计算的内容

    3.filter() 函数,   相当于过滤器,不符合条件的过滤掉,返回的值是过滤后的内容

    eg:
    st = ['a', 'b', 'c', 'd']
    
    def fun(a):
        if a != 'a':   # 筛选条件
            return a
    
    ret = filter(fun, st)
    print(list(ret))

    >>> ['b', 'c', 'd']

    4.map()   字符串处理

    st = ['c', 'd']
    
    def fun(a):
        return a + "xss"  # 给列表中的每个元素后面加上‘xss’ 然后输出
    
    ret = map(fun, st)
    
    print(ret) # map  object的迭代器, 输出的是存放该函数的地址
    print(list(ret))

    >>>   <map object at 0x000001E7903B40B8>
              ['cxss', 'dxss']

    5.reduce()函数    叠加器

    from functools import reduce    # 使用reduce() 要加上该调用语句
    
    def add(x, y):
        return x + y
    
    print(reduce(add, range(1, 10)))   # 输出1-9相加的和
    # 执行机制:取出range中的前两个数1和2分别赋值给x和y,执行adda()函数后把结果放入range中(此时range中数变为3 3 4 5 6 7 8 9),以此类推

    6.lambda()   匿名函数

    from functools import reduce      # 使用reduce() 的调用语句
    print(reduce(lambda x, y: x*y, range(1, 7)))       # 计算6!
    # 执行机制:取出range中的前两个数1和2分别赋值给x和y,然后相乘,结果放入range中(此时range中数变为2 3 4 5 6),以此类推

    四、关键字 global 和 nonlocal (不多解释,直接上例子)

    eg1:

    count = 10
    
    def f():
       global count  # 声明count是一个全局变量
        print(count)
        # 如果前面不用global声明,函数报错->UnboundLocalError: local variable 'count' referenced before assignment
        # 原因:count变量在定义之前调用,既全局变量不能在局部被修改
        count = 5
        print(count)
    
    f()

    >>> 10

            5

    eg2:

    def outer():
        count = 10
    
        def inner():
            nonlocal count  # 局部变量用nonlocal关键字 声明
             count = 20
            print(count)
        inner()
        print(count)
    
    outer()

    >>> 20

            20

  • 相关阅读:
    人一生最后悔五件事
    C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)
    socket 编程 学习2
    Linux内核源码阅读以及工具(转)
    迭代法
    C语言程序设计 C语言中的时间函数(转)
    线段的平移
    数独(sudoku)的生成与破解(转)
    PageBase,ControlBase,Base Class
    Oracle “万年虫”
  • 原文地址:https://www.cnblogs.com/ss-long/p/10347318.html
Copyright © 2011-2022 走看看