函数是函数式编程语言的魅力所在。这一章节,我们就来了解下Python的函数
什么是函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
函数定义规则
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
-
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
函数定义形如:
image.png
下面我们先来看一个简单的函数定义:
def helloworld():
# 可以写一些注释
print('this is a function');
这是最简单的函数定义了,没有参数和返回值,只是打印了一句话。
注意:python是一个对缩进很敏感的语言,一定要注意缩进
如何调用函数
image.png函数的调用其实我们一直都会,之前一直在用的print()其实就是一个内置的函数,可以让我们直接使用的,下面我们来演示一个例子
函数的参数
形参和实参
image.png函数参数分类
函数参数按照类型可以分为四类:
- 必备参数
- 关键字参数
- 默认参数
- 不定长参数
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
image.png
def paramTest01(name,age):
# 测试必备参数
print('你的名字:',name,', 年龄: ', age)
# 调用必备参数案例
paramTest01('Allen',18)
print('='*20)
paramTest01(18,'Allen')
结果为:
你的名字: Allen , 年龄: 18
====================
你的名字: 18 , 年龄: Allen
以上结果告诉我们,参数只认顺序,不管类型
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
image.png
def paramTest02(name,age):
# 测试关键字参数
print('你的名字:',name,', 年龄: ', age)
# 调用关键字参数案例
paramTest02(name='Allen',age=18)
print('='*20)
paramTest02(age=18,name='Allen')
运行结果:
你的名字: Allen , 年龄: 18
====================
你的名字: Allen , 年龄: 18
关键字参数,无论顺序如何,都是按名称进行匹配的
默认参数
调用函数时,默认参数的值如果没有传入,则被认为是默认值
image.png
def paramTest03(name,age=18):
# 测试默认值参数
print('你的名字:',name,', 年龄: ', age)
paramTest03('Allen')
运行结果:
你的名字: Allen , 年龄: 18
1、有默认值得参数,可以不传实参
2、有默认值得参数必须排在无默认值参数得后面
不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。
image.png
函数的返回值
1、return
image.png image.png image.png image.png2、yield
image.png image.pngdef gen(num):
i=0
while i< num:
temp = yield(i)
print(temp)
i += 1
a=gen(5)
print(next(a))
print(next(a))
print(a.send('this is a'))
可以通过send方法,将参数传入yield中
生成器和迭代器
1、生成器
image.pngimage.png
image.png
网友评论