python-2-函数

30 篇文章 0 订阅
17 篇文章 0 订阅
函数
1、创建函数
1.1、定义函数
  • 定义函数
def  my_abs(x):
  • 定义一个什么都不做的空函数,可以使用pass语句:
def nop(): 
	pass

pass可以用来做占位符。

1.2、参数检查
  • 若参数个数不对,会跑出TypeError错误。
  • 数据类型检查可以使用内置函数isinstance()实现:
def my_abs(x):
	if not isinstance(x, (int, float)): # 检测若不是int和float类型,则抛出错误
		raise TypeError('Bad operand type')
	if x >= 0:
		return x
	else:
		return -x
1.3、返回多个值
  • 函数可以返回多个值,如:
import math
def move(x, y, step, angle = 0):
	nx = x + step * math.cos(angle)
	ny = y - step * math.sin(angle)
	return nx, ny

实际上,返回值是一个tuple,语法上tuple可以省略括号

1.4、参数说明
  • 函数的默认参数必须为不变对象,不可以为list。
  • 可变参数(表示传入的参数个数是可变的),即在参数之前添加*,此时,参数接收到的是一个tuple。迪奥哟偶那个此函数时,可以传入任意个参数,包括0个参数。
  • 关键字参数:允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装成一个dict。关键字参数一般在前面添加**,只能传入一个dict,不能传入list、tuple。
  • 命名关键字参数:对于关键字参数,可以传入任意不受限制的关键字参数,检查是否含有某参数用:if ‘city’ in kw:。若要限制关键字参数的名字,可以用命名关键字参数,需要一个特殊分隔符*,eg:def person(name, age, *, city, job):。命名关键字必须传入参数名,这和位置参数不同。
  • 参数组合:
1.5、递归函数
  • 要注意防止栈溢出,每当进入一个函数调用,栈就会加一层栈帧;当函数返回,栈就会减一层栈帧,栈的空间不是无限的,会导致栈溢出。
  • 解决溢出的方法是通过尾递归优化。尾递归是指在函数返回的时候,调用自身本身并且return语句不能包含表达式。这样,不管调用多少次,都只占用一个栈帧,不会出现溢出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值