第十六章 函数基础

为何使用函数

函数在程序中主要作用有以下两点:

  • 最大化代码重用和最小化代码冗余;
  • 过程的分解;

编写函数

在python中函数的主要概念:

  • def是可执行的代码:
    def是一条可执行的语句——在python运行def之前,函数并不存在。事实上,在if语句、while循环甚至其他的def中嵌套def语句是合法的;
  • def创建一个对象并将其赋值给某一变量名:
    当python运行到def语句时,将生成一个新的函数对象并将其赋值给这个函数名。和所有的赋值一样,函数名变成一个函数对象的引用;
  • lambda创建一个对象并将其作为结果返回:
    lambda表达式创建一个匿名函数;
  • return将一个结果对象传回给调用者:
    函数是通过一条return语句将计算得到的值传回给调用者的,即返回值成为函数调用的结果。没有返回值的return语句则直接将控制权交会给调用者;
  • yield向调用者发回一个结果对象,但是会记住它离开的位置:
    像生成器这样的函数也可以通过yield语句来返回值,并挂起它们的状态以便稍后能恢复;
  • global声明了一个模块级的可赋值的变量:
    在默认情况下,所有在一个函数中被赋值的对象都是这个函数的局部变量,并且仅在这个函数运行的过程中存在。需要将其赋值成为全局变量,则需要在global语句中声明它;
  • nonlocal声明了一个需要被赋值的外层函数变量:
    nonlocal语句允许一个函数对一个在其外层的def语句的作用域中的已有名称进行赋值;
  • 参数是通过赋值(对象引用)传递给函数的:
    在程序中,调用者和函数通过引用共同对象,但是不需要别名;
  • 除非你显式指明形式参数与实际参数的对应,否则实际参数按位置赋值给形式参数:
  • 参数、返回值与变量不需要被声明:
    可以传递任意类型的参数给函数,函数也可以返回任意类型的对象:

def语句

def语句会创建一个函数对象并将其赋值给一个变量名。def语句一般的格式如下所示:

def name(arg1, arg2, ...argN):
	statements
	...
	return value

return语句是可选的;

def语句执行与运行时

def语句是一条真正可执行的语句:当它运行的时候,会创建一个新的函数对象并将其赋值给一个变量名。因为def是一条语句,所以它可以出现在任何的地方,如下:

if test:
	def func():
		...
else:
	def func():
		...
...
func()

可以将上述代码中的def理解为一条‘=’赋值语句:它在运行时给一个变量名赋值。通常def在运行到的时候才进行计算,而在def之中的代码也只在函数被调用后才会计算。
因为函数是在运行时才定义的,所以函数名并没有什么特别之处。关键在于函数名所引用的那个对象:

othername = func
othername()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值