zoukankan      html  css  js  c++  java
  • 函数式编程与参数

    函数:def定义,有返回值

    过程:def定义,没有返回值

    函数式编程是 抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量。所以,任意函数,只要输入是确定的,输出就是确定的,就像数学里的函数,变量和因变量的关系是明确的。

    Python对函数式编程提供部分支持,由于Python允许使用变量,所以Python不是纯函数式编程语言。

    数学表达式:(1+2)*3-4

    # 面向过程
    var a = 1 + 2
    var b = a * 3
    var c = b - 4
    
    # 函数式
    var result = subtract(multiply(add(1, 2), 3), 4)

    函数式编程的语言:lisp, hashshell,erlang

    形参与实参

    >>> def test(a, b):  # a,b就是形参
    ...   print(a)
    ...   print(b)
    ...
    >>> test(1, 2) # 1,2就是实参
    1
    2

    默认参数(声明时)

    >>> def test(a, b=2): # 这里的默认参数就是b
    ...   print(a)
    ...   print(b)
    ...
    >>> test(1)
    1
    2

    位置参数与关键字参数(调用时)

    >>> def test(a, b, c):
    ...   print(a)
    ...   print(b)
    ...   print(c)
    ...
    >>> test(1,c=2,b=3) # 这里的1就是位置参数,2和3是关键字参数
    1
    3
    2

    不固定参数

    *args:把对应的位置参数放到元组里

    **kwargs:把对应的关键字参数放到字典里

    >>> def test(*args, **kwargs):
    ...   print(args)
    ...   print(kwargs)
    ...
    >>> test(1,2,3,a=4,b=5) # 等价于>>> test(*[1,2,3], **{'b':5,'a':4})
    (1, 2, 3)
    {'b': 5, 'a': 4}

    声明函数时,不固定参数一定要放在位置参数和默认参数的后面

    调用函数时,关键字参数一定要放在位置参数的后面

  • 相关阅读:
    CF1051F The Shortest Statement 题解
    CF819B Mister B and PR Shifts 题解
    HDU3686 Traffic Real Time Query System 题解
    HDU 5969 最大的位或 题解
    P3295 萌萌哒 题解
    BZOJ1854 连续攻击游戏 题解
    使用Python编写的对拍程序
    CF796C Bank Hacking 题解
    BZOJ2200 道路与航线 题解
    USACO07NOV Cow Relays G 题解
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/8735634.html
Copyright © 2011-2022 走看看