美文网首页
python之函数

python之函数

作者: 酒深巷子Ya | 来源:发表于2018-05-22 23:43 被阅读28次

    注意项:定义默认参数时,默认参数必须指向不可变对象。

    异于其它语言的:函数可以返回多个值。例如:在游戏中位移和坐标;(第一次正式接触函数返回多个值)
    def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

    函数作为返回值:
    def lazy_sum(*args):
    def sum():
    s = 0
    for m in args:
    s += m
    return s
    return sum
    f = lazy_sum(1, 3, 5, 7)
    print(f())#16
    print(f)#<function lazy_sum.<locals>.sum at 0x1022a1488>
    注意项:1.return sum与sum()函数对齐;2.返回闭包时:返回函数不要引用任何循环变量,或者后续会发生变化的变量。(不可变对象)
    在函数lazy_sum中又定义了函数sum,并且在内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。

    匿名函数:关键字lambda表示匿名函数,理解:冒号前面的x表示函数参数,冒号后面是返回结果。

    1. num = list(map(lambda x : x ** 2, range(1, 10)))
      2.匿名函数当返回值
      def point(x, y):
      return lambda : x ** 2 + y ** 2 #闭包
      point1 = point(1, 4)
      print(point1())
      print(point(1, 4))

    偏函数:Python的functools模块提供了很多函数有用的功能,方便我们更灵活、方便的使用函数,其中一个就是骗函数。
    例如:int() 我们可以把 '1234' 转变成正数,int('1234') = 1234,默认是转变为十进制,int() 还可以设置base参数,我们还可以设置成其它进制,int('1234', base = 8) = 668
    我们可以通过functools.partial就是帮助我们创建一个偏函数的,更方便这种操作:
    import functools
    int2 = functools.partial(int, base=2)//创建偏函数
    int2('1000000')//使用偏函数,我们可以更方便的调用函数
    64

    相关文章

      网友评论

          本文标题:python之函数

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