Python廖雪峰教程学习笔记:Day4

前言

养成一个好的习惯只需要坚持21天,Day4

函数

编程中,函数的调用、定义在一定程度上可以简化功能的实现,降低程序的复杂度。

调用函数

Python中内置了许多有用的函数,我们在调用一个内置函数的时候,需要知道函数的名称和参数。
内置函数-Python 3.7.6文档
调用abs()函数:
在这里插入图片描述
调用函数的数量,如果传入的参数数量不对,会报TypeError错误:
在这里插入图片描述
如果传入参数的数量是对的,但是参数类型不同,也会报TypeError错误:
在这里插入图片描述
max():求最大值;
int():强制类型转换成整数;
hex():把一个整数转换成十六进制数。

定义函数

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
例如定义一个求长方形周长的函数:
在这里插入图片描述
函数体内的语句在执行到return时,函数执行完毕并将运行的结果返回。如果没有return语句,则返回Nonereturn None可以简写为return
空函数的函数体可以用pass语句;函数也可以返回多个值。

函数的参数

定义函数的时候,我们就确定了参数的名字和位置,函数的接口定义就完成了。对于函数的调用,我们必须正确的传递参数。
Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
位置参数

#计算x的平方
def power(x):
	return x * x
#计算x的n次方
def power(x,n):
	s = 1
	while n > 0:
		n = n - 1
		s = s * x	

power(x, n)函数有两个参数:x和n,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和n。
默认参数
对于上面的power(x, n)函数,可以设置n等于2为默认参数,即power(x, n=2)。对于n>2的其他情况,就明确的传入n的数值即可power(5,3)。
在这里插入图片描述
设置默认参数时,需要注意,必选参数在前,默认参数在后。
⚠️定义默认参数要牢记一点:默认参数必须指向不变对象!
例如定义一个函数,传入一个list,添加一个END再返回:

def add_end(L=[]):
	L.append('END')
	return L

在这里插入图片描述
由运行结果可知,add_end()函数在正常调用时结果是对的;使用默认参数调用时,一开始结果是对的,但再次调用时结果就不对了。因为这里的L是一个变量,它指向的[]是一个可变对象,每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。修改上面的例子,我们可以用None这个不变对象来实现:

def add_end(L=None):
    if L is None:
        L = []
    L.append('END')
    return L

可变参数
可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。例如:给定一组数字a,b,c…,计算a2+b2+c2+…

def calc(numbers):
	sum = 0
	for x in numbers:
		sum = sum + x * x
	return sum

在这里插入图片描述
在调用上面的calc()函数的时候必须先构造一个list或者tuple,而不能直接传入多个变量。这里就可以在numbers前面加上一个*号,让函数的参数变成一个可变参数,即:
在这里插入图片描述
关键字参数
可变参数允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。例如:

def person(name,age,**kw):
	print('name:', name, 'age:', age, 'other:', kw)

函数person包括两个必选参数nameage,还接受关键字参数kw
在这里插入图片描述
由运行测试可知,可以不传入关键字参数,可以传入任意个数的关键字参数,也可以把dict作为关键字参数传进去。

小结

默认参数一定要用不可变对象,默认参数要写在必选参数之后。
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
使用*args**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

发布了4 篇原创文章 · 获赞 13 · 访问量 497

猜你喜欢

转载自blog.csdn.net/Comme_moik/article/details/104292709
今日推荐