【python学习】Python中的函数

感谢廖雪峰老师提供了自学python很好的平台,以下内容仅作个人学习记录使用,侵删。
附上链接: 廖雪峰的官方网站.

函数的调用

Python中提供了很多内置的函数,我们知道函数的名称和参数之后可以直接调用。如果不了解使用方法,也可以通过help()函数来查看该函数的帮助信息。

函数的定义

定义函数

函数定义的语法如下:

def FunctionName (paras):
	Body of Function

例如,定义一个求从a到b的整数和的函数:

def FindTheSum(sta,end):
	sum = 0
	for i in range(sta,end+1):
		sum += i
	print('The sum is',sum)
	return sum

空函数

定义一个空函数,可以使用pass语句,pass语句表示什么都不做,可以作为一个占位符。

  • 空函数:
def nop():
	pass
  • 条件判断中:
if age >= 18:
	pass

参数检查

我们在定义函数的时候,并没有像其他语言一样指定参数的类型,但是在调用时候往往会出现参数类型不匹配的情况,这就需要我们在函数内部手动对传入参数的类型做检查,比如下面的例子只允许整数和浮点型类型的参数传入:

def my_abs(x):
	if not isinstance(x, (int, float)):
		raise TypeError('bad operand type')
	if x>=0:
		return x
	else:
		return -x

这样定义之后,如果传入了错误的参数类型,函数就会抛出一个错误:
在这里插入图片描述

返回多个值

当使用Python函数返回多个值的时候,实际上是返回了一个tuple,然后按照位置赋值给对应的值。

def move(x, y, step, angle):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

x, y = move(100, 100, 60, 0)

函数的参数

参数传入

再调用函数时,函数的参数列表中的值按照所在位置顺序依次赋值给对应的参数。

默认参数

在函数定义时,为其中的某些参数设置默认值,这样如果没有对其赋值的话,则会自动取其默认值:

def move(x, y, step=0, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

x, y = move(100, 100, 60, 0)
x1, y1 = move(100,100)

注意:

  1. 必选参数要在前面,默认参数再后面。
  2. 关于默认参数的设置,可以把变化大的参数放在前面,变化小的参数放在后面,这样就可以为那些变化不大的参数设定默认值。
  3. 这样做可以有效地降低调用函数的难度。
  4. 在调用的时候也可以不按照顺序提供其中一部分默认函数:
def test(a, b, c=0, d=0):
	pass

test(1,2)
test(1,2,3,4)
test(1,2,d=4)
  1. 默认参数必须指向一个不变的对象。
    对于下面的函数,默认参数是一个空的list,在函数定义的时候,默认参数l的值就已经被计算出来了,是个一个[],因此默认参数是指向这个变量[]的一个对象。
    如果调用的时候传入了参数,则会在传入的list后面添加一个字符a,与默认参数的对象无关;
    如果调用的时候使用了默认参数,则第一次调用的时候就会将l原本指向的空list,运行完这个函数之后,会在这个默认参数的后面加上一个字符a,也就是说此时默认参数的内容已经被改变了。下一次再使用默认参数进行调用的时候,这个参数就仿佛具有记忆性了一样,会在上次运行的基础上加上一个a,因此会得到我们不想要的结果。
    在这里插入图片描述
    因此必须要让默认参数指向不变的一个对象。将上面的例子修改成:
    在这里插入图片描述

可变参数

如果我们传入的参数的数量未定,少的话可以设置几个默认参数,但是多的话用默认参数就不是很方便。因此我们可以将输入的参数改为是一个tuple或者是list这种形式,但是这就要求在传入参数的时候将输入数据提前转换成目标的形式。

def CalcSum(numbers):
	if not isinstance(numbers,(list,tuple)):
		return 0
	sum = 0
	for n in numbers:
		sum += n
	return sum
CalcSum([1,7,3,8])
CalcSum([1,6,8,4])
CalcSum(2)

在这里插入图片描述

递归函数

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值