美文网首页
day10-课后总结

day10-课后总结

作者: 麻瓜_1fb4 | 来源:发表于2018-10-11 20:03 被阅读0次

    函数的应用

    1.不定长参数

    *参数名:将位置参数作为元祖的元素,参数就是一个元祖
    **参数名:将关键字参数,以参数名作为key,实参作为值,组合成键值对。
    注意:经常将*args和**kwargs组合在一起使用,但是使用的时候*要放在**的前面!

    def func4(*args):
        print(args)
    func4(55, 36, 254) # (55, 36, 254)
    
    def func5(**kwargs):
        print(kwargs)
    func5(a=10, b=20, c=30) # {'a': 10, 'b': 20, 'c': 30}
    
    def func6(*args, **kwargs):
        print(args, kwargs)
    func6(12, 55, a=0) # (12, 55) {'a': 0}
    

    2.匿名函数

    函数名 = lambda 参数列表:返回值

    # 写一个匿名函数,功能是求两个数的和
    sum1 = lambda num1, num2: num1 + num2
    print(sum1(2, 7))  # 9
    
    # 练习:求1+2+3...+n的和
    sum2 = lambda n: sum(range(n+1))
    print(sum2(100)) # 5050
    
    # 练习:读程序
    funcs = []
    for item in range(1, 5):
        funcs.append(lambda x: x*item)
    print(item) # 4
    print(funcs[0](2)) #2*4 8 
    print(funcs[1](2)) #2*4 8
    # 分析
    item = 1~4
    item = 1  [lambda x: x*item]
    item = 2  [lambda x: x*item, lambda x: x*item]
    item = 3  [lambda x: x*item, lambda x: x*item, lambda x: x*item]
    item = 4  [lambda x: x*item, lambda x: x*item, lambda x: x*item, lambda x: x*item]
    

    3.变量的作用域

    a.
    global关键字
    在函数中说明一个变量是全局变量

    name = 'abc'
    def func2():
        global name  # 说明当前函数中使用的name是全局变量的name
        name = 'aaa'
        print(name) # aaa
    func2()
    print(name) # aaa
    

    b.
    nonlocal关键字
    想要在局部的局部中修改局部变量的值

    def func3():
        abc = 100
        def func4():
            nonlocal abc
            abc = 10
            print(abc)
        func4() # 10
        print(abc)
    func3() # 10
    

    4.函数的变量

    a.
    声明函数就是声明一个类型是function的变量,函数名实质就是变量名。

    def func11():
        print('我是函数')
    # 用一个函数给变量a赋值,a也是一个函数
    a = func11
    a() #我是函数
    # 将函数func11的返回值给b,b的值是None
    b = func11() # 我是函数
    print(b) # None
    

    b.函数作为列表的元素

    a = 10
    list1 = [1, a]
    print(list1, list1[1]+100) # [1, 10] 110
    def func22():
        print('我又是函数')
        return 10
    list2 = [1, func22, func22()] 
    print(list2) # [1, <function func22 at 0x000001D97A227400>, 10]
    # list2[1]取到一个函数,然后后面加()调用函数
    print(list2[1]())  #  10
    # list2[2]取到的是整数10
    print(list2[2]+100) # 110
    

    c.将函数作为参数

    a = 10
    def func1(n):
        print(n)
    func1(a) # 10
    def func11(n):
        n()
    def func12():
        print('hello world')
    func11(func12)
    re = func11(func12)
    print(re) # None
    

    d.sort的应用
    列表.sort(key=None, reverse=False)

    list2 = [
        {'name': '张三', 'age': 18, 'score': 90},
        {'name': '李四', 'age': 48, 'score': 60},
        {'name': '王五', 'age': 40, 'score': 77}
    ]
    def get_age(item):
        return item['age']
    list2.sort(key=get_age)
    print(list2) # [{'name': '张三', 'age': 18, 'score': 90}, {'name': '王五', 'age': 40, 'score': 77}, {'name': '李四', 'age': 48, 'score': 60}]
    

    方法二:

    list2.sort(key=lambda item: item['score'])
    print(list2) # [{'name': '李四', 'age': 48, 'score': 60}, {'name': '王五', 'age': 40, 'score': 77}, {'name': '张三', 'age': 18, 'score': 90}]
    
    list3 = [
        ('a', 90),
        (10, 3),
        ('b', 30)
    ]
    def second(item):
        return item[1]
    list3.sort(key=second)
    print(list3) # [(10, 3), ('b', 30), ('a', 90)]
    
    # 方法二
    list3.sort(key=lambda item: item[1], reverse=True)
    print(list3) # [('a', 90), ('b', 30), (10, 3)]
    

    f.将函数作为返回值

    # 根据运算符符号,返回对应的功能
    def operation(operator:str):
        if operator == '+':
            def func1(*args, **kwargs):
                sum1 = 0
                for item in args:
                    sum1 += item
                for key in kwargs:
                    sum1 += kwargs[key]
                return sum1
            return func1
    f1 = operation('+') # f1就是有两个不定长参数,功能是求和的函数
    re = f1(10, 20, a=2, b=3)
    print(re) # 35
    

    5.函数的调用

    # 求多个数的和以及平均值
    def nrj_sum(*nums):
        sum1 = sum(nums)
        avg = sum1/len(nums)
        return sum1, avg  # 同时返回和与平均值
    a, b = nrj_sum(2, 45, 67, 90, 0)
    num = nrj_sum(34, 56, 67, 34, 56)
    print(a, b) # 204 40.8
    print(num[0], num[1]) # 247 49.4
    

    相关文章

      网友评论

          本文标题:day10-课后总结

          本文链接:https://www.haomeiwen.com/subject/djciaftx.html