zoukankan      html  css  js  c++  java
  • python 函数

    1. 调用:abs(-20)     调用时若传入的参数不对,报错 TypeError   定义:使用def

    def my_abs(x):
        if x >= 0:
            return x
        else:
            return -x

    2. 空函数:pass

    3. 返回值:可以有多个(其实是一个tuple)

    def move(x, y, step, angle=0):
        nx = x + step * math.cos(angle)
        ny = y - step * math.sin(angle)
        return nx, ny
    
    x, y = move(100, 100, 60, math.pi / 6)

    4. 参数:

      默认参数(若只传入一位参数,则默认n=2)

    def power(x, n=2):
        s = 1
        while n > 0:
            n = n - 1
            s = s * x
        return s

      可变参数(传入参数个数不确定,参数作为一个list或tuple传进来)

    def calc(*numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
        return sum
    
    >>> calc(1, 2, 3)
    14

     5. 函数本身也可以赋值给变量,即:变量可以指向函数。并可以用该变量调用函数(相当于变量是指针)

    >>> f = abs
    >>> f(-10)
    10

    6. map()
    map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

    >>> def f(x):
    ...     return x * x
    ...
    >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> list(r)
    [1, 4, 9, 16, 25, 36, 49, 64, 81]

    7. reduce()
    reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。

    >>> from functools import reduce
    >>> def add(x, y):
    ...     return x + y
    ...
    >>> reduce(add, [1, 3, 5, 7, 9])
    25

    8. filter()
    filter()接收一个函数和一个序列。把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

    def is_odd(n):
        return n % 2 == 1
    
    list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
    # 结果: [1, 5, 9, 15]

    9. sorted()
      从小到大排序。

      还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:

    >>> sorted([36, 5, -12, 9, -21], key=abs)
    [5, 9, -12, -21, 36]


    10. 返回函数

      返回值是一个函数,形成闭包。

    11. 匿名函数

      lambda x: x * x

      关键字lambda表示匿名函数,冒号前面的x表示函数参数。

      匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。

    12. 装饰器

      在代码运行期间动态增加功能。

    def log(func):
        def wrapper(*args, **kw):
            print('call %s():' % func.__name__)
            return func(*args, **kw)
        return wrapper
    
    @log
    def now():
        print('2015-3-25')
    
    >>> now()
    call now():
    2015-3-25

    13. 偏函数
      functools.partial帮助我们创建一个偏函数。functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数。

    >>> import functools
    >>> int2 = functools.partial(int, base=2)
    >>> int2('1000000')
    64
  • 相关阅读:
    python内置函数
    conda和anaconda的区别
    闭包,装饰器,property
    【模板】大数乘法(51nod 1027)
    51nod 1791 合法括号子段
    51nod 1419 最小公倍数挑战
    51nod 1241 特殊的排序
    51nod 1090 3个数和为0
    【模板】51nod 1051 最大子矩阵和
    51nod 1267 4个数和为0
  • 原文地址:https://www.cnblogs.com/syyy/p/7711390.html
Copyright © 2011-2022 走看看