Python_4_函数

作者: 芭比哪吒 | 来源:发表于2018-08-20 13:30 被阅读22次

    4.函数

    参数带有一个`*`表示参数当作元组来处理
    参数带有两个`*`表示参数当作元组来处理
    

    使用def创建一个函数

    def add(x, y):
        print("x is {} and y is {}".format(x, y))
        return x + y  # 返回值通过return
    

    调用函数

    add(5, 6)  # => 打印 "x is 5 and y is 6" 并且返回 11
    

    调用函数另外一种方法

    add(y=6, x=5)  # 不在乎顺序
    

    参数数量可变

    def varargs(*args):
        return args
    
    varargs(1, 2, 3)  # => 返回(1, 2, 3)
    

    参数数量可变的keyword参数

    def keyword_args(**kwargs):
        return kwargs
    

    会得到什么样子的返回值?

    keyword_args(big="foot", loch="ness")  # => {"big": "foot", "loch": "ness"}
    

    如果你愿意,你可以混用它们

    def all_the_args(*args, **kwargs):
        print(args)
        print(kwargs)
    

    打印结果

    (1, 2)

    {"a": 3, "b": 4}

    直接使用字典和元组赋值

    args = (1, 2, 3, 4)
    kwargs = {"a": 3, "b": 4}
    all_the_args(*args)            # 相当于 all_the_args(1, 2, 3, 4)
    all_the_args(**kwargs)         # 相当于 all_the_args(a=3, b=4)
    all_the_args(*args, **kwargs)  # 相当于 all_the_args(1, 2, 3, 4, a=3, b=4)
    

    返回多个值并且使用元组赋值

    def swap(x, y):
        return y, x  
    x = 1
    y = 2
    x, y = swap(x, y)     # => x = 2, y = 1
    

    Python 第一类函数

    def create_adder(x):
        def adder(y):
            return x + y
        return adder
    
    add_10 = create_adder(10)
    add_10(3)   # => 13
    

    匿名函数

    (lambda x: x > 2)(3)                  # => True
    (lambda x, y: x ** 2 + y ** 2)(2, 1)  # => 5
    # ps ** 是幂运算 不要记错了
    

    内置高阶函数

    list(map(add_10, [1, 2, 3]))          # => [11, 12, 13]
    list(map(max, [1, 2, 3], [4, 2, 1]))  # => [4, 2, 3]
    
    list(filter(lambda x: x > 5, [3, 4, 5, 6, 7]))  # => [6, 7]
    

    相关文章

      网友评论

        本文标题:Python_4_函数

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