美文网首页
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精简学习(九)

    Python精简学习之函数之匿名函数-匿名函数

  • 7、函数

    1、Python之什么是函数 2、Python之调用函数 Python内置了很多有用的函数,我们可以直接调用。 要...

  • Python精简学习(八)

    Python精简学习之函数引用-函数引用

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

  • Python第五堂笔记--函数

    1️⃣、Python之什么是函数 函数就是最基本的一种代码抽象的方式。 2️⃣、Python之调用函数 要调用一个...

  • Python学习之模块

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

  • Python学习之面向对象高级编程

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

  • Python学习之正则

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

  • Python学习之常用模块

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

  • Python学习之进程和线程

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

网友评论

      本文标题:python之函数

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