00.一个函数就是将一些语句集合再仪器的部件,它们能够不止一次地再程序中运行。函数还能够计算出一个返回值,并能够改变作为函数输入的参数,而这些参数再代码运行时也许每次都不相同。函数时Python为了代码最大程度的重用和最小化代码冗余而提供的最基本的程序结构。
01.函数相关的语句和表达式
calls myfunc("spam", "eggs", meat=ham)
def def adder(a, b = 1, *c):
return return a+b+c[0]
global def changer(): global x; x = 'new'
nonlocal def changer(): nonlocal x; x = 'new'
yield def squares(x): for i in range(x): yield i ** 2
lambda Funcs = [lambda x : x**2, lambda x:x*3]
02.为何使用函数:
*最大化的代码重用和最小化代码冗余:Python的函数时一种简单的办法去打包逻辑算法,使其能够再之后不止在意出、不止一次地使用。
*流程的分解:函数也提供了一种将一个系统分割为定义完好的不同部分的工具。
03.编写函数
*def是可执行的代码。Python的函数是由一个新的
*def创建了一个对象并将其赋值给某一变量名。当Python运行到def语句时,它将会生成一个新的函数对象并将其赋值给这个函数名。
*lambda创建一个对象但将其作为结果返回。这一功能允许我们把函数定义内联到语法上一条def语句不能工作的滴地方
*return将一个结果对象发送给调用者。当函数被调用时,其调用者停止运行直到这个函数完成了它的工作,之后函数才将控制全返回调用者。函数时通过return语句将计算得到的值传递给调用者的,返回值称为函数调用的结果。
*yield向调用者发回一个结果对象,但记住它离开的地方。像生成器这样的函数也可以通过yiled语句来返回值,并挂起它们的状态以便稍后能够恢复状态。
*global声明了一个模块级的变量并被赋值。
*nonlocal声明了将要赋值的一个封闭的函数变量。nonlocal语句允许一个函数来赋值一条语法封闭的def语句的作用域中已有的名称。这就是允许封闭的函数作为保留状态的一个地方——当一个函数调用的时候,信息被记住了——而不必使用共享的全局名称。
*函数是通过赋值(对象引用)传递的。
*参数、返回值以及变量并不是声明。
04.def语句将创建一个函数对象并将其赋值给一个变量名。def的首行定义了函数名,赋值给函数对象。
def <name>(arg1, arg2,... argN):
<statements>
05.函数仅仅是对象,在程序执行时它清楚地记录在内存之中。实际上,除了调用以外,函数允许任意属性附加到记录信息以龚随后使用。
06.函数描绘了两个方面:定义(def创建了一个函数)以及调用(表达式高数Python去运行函数主体)。
def times(x,y): return x * y
当Python运行到这里并执行了def语句时,它将会创建一个新的函数对象,封装这个函数的代码并将这个对象赋值给变量名times。
07.这种依赖类型的行为称为堕胎,其含义就是一个操作的意义取决于被操作对象的类型。因为Python是动态类型语言,所以多态在Python中随处可见。
08.在Python中,代码不应该关心特定的数据类型。如果不是这样,那么代码将指对编写时你所关心的那些类型有效,对以后的那些可能编写的兼容对象类型并不支持,这样会打乱代码的灵活性。大体上来说,我们在Python中为对象白那些接口,而不是数据类型。
09.intersect函数中的res变量在Python中叫做本地变量——这个变量只是在def内的函数中时可见的,并且仅在函数运行时存在的。