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

    八.嵌套函数(注意区别)

    1.

    age = 20
    def age1():
        age = 30
        print(age)
        def age2():
            age = 40
            print(age)
    age1()
    print(age)

    结果:

    30
    20

    2.

    age = 20
    def age1():
    
        print(age)
        def age2():
            age = 40
            print(age)
        age2()
    age1()
    print(age)

    结果:

    20
    40
    20

    3.

    age = 20
    def age1():
        def age2():
            print(age)
        age = 40
        age2()
    age1()
    print(age)

    结果:

    40
    20

    4.

    age = 20
    def age1():
        global age
        def age2():
            print(age)
        age = 40
        age2()
    age1()
    print(age)

    结果:

    40
    40

    5.

    age = 20
    def age1():
        def age2():
            print(age)
        age2()
        age = 40
    age1()
    print(age)

    结果:

    报错

    九.作用域

    Python中一个函数就是一个作用域

    age = 18
    def func1():
        age = 73
        def func2():
            print(age)
        return func2
    val = func1()
    val()

    结果:

    73

    当把一个函数作为返回值时,赋值给外部的一个参数,调用函数时会遵循链式原则,回到函数域往上调用

    十.匿名函数

    def calc(x,y):      #之前的声明函数的方法
        print(x*y)
    calc(4, 8)         #调用函数
    
    
    func = lambda x,y:x*y  #定义一个匿名函数
    print(func(4, 8))

    匿名函数一般和其他函数搭配使用,例如:

    map(fun, lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表返回

    def func1(x):
        x = x*x
        return x
    L1 = [1,2,3,4,5,6,7,8,9]
    L2 = list(map(func1,L1))
    print(L2)

    结果:

    [1, 4, 9, 16, 25, 36, 49, 64, 81]

    filter(func, lst),将func作用于lst的每个元素,然后根据返回值是True或False判断是保留还是丢弃该元素。

    r = list(range(-10, 10))
    def func1(x):
        return x < 0
    a = list(filter(func1,r))
    print(r)
    print(a)

    例如,找出-10到9范围内所有的负数

    结果:

    [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1]

    十一.高阶函数

    高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。

    例如:

    def add(x, y, f):
        return f(x)+f(y)
    res = add(3, -9, abs)  #abs()用于取绝对值
    print(res)

    def func1(x):
        return x
    def func2(x,y):
        return x*y
    n = func1(func2)
    print(n(4,5))
  • 相关阅读:
    C++11 std标准库chrono获取系统时间戳
    求取激光光斑质心
    Windows多网卡UDP广播问题
    IP地址分类
    C++各种时间的含义、区别和相互转换
    MFC中控件显示提示信息tooltip
    IP地址 网关 子网掩码之间的关系
    MFC动态添加菜单选项
    opencv函数学习:rotate()的使用
    opencv函数学习:flip()的使用
  • 原文地址:https://www.cnblogs.com/sunj-96/p/10644620.html
Copyright © 2011-2022 走看看