一、函数(function)简介
基本概念:是可重用的程序代码,代表一个任务或者一个功能
作用:不仅可以实现代码的复用,更能实现代码的一致性。 一致性指的是,只要修改代码,所有调用该代码的地方都能得到体现。
函数的分类:1、内置函数:Python本身内置的函数,直接使用。 例如:str(),list()
2、标准库函数:可以通过import语句导入库,然后使用
3、第三方函数:Python社区中的库,可以下载安装后,import导入使用
4、自定义函数:用户自己定义的函数(主要学习自定义函数)
二、函数的定义和调用
定义函数的核心语法:
def 函数名([参数列表]):
'''文档字符串'''
函数体/若干语句
其中文档字符串用以解释说明函数的功能,可以用help(函数名.__doc__)查看该函数的说明
注意事项:
1、使用def定义函数时,后面是一个空格和函数的名称
2、参数列表:(1)圆括号内是形式参数列表,多个形参用逗号隔开;
(2)形式参数不需要声明类型,也不需要指定函数的返回值类型;
(3)无参数也必须保留空的圆括号;
(4)实参列表必须也形参列表一一对应
以下为一个简单的函数定义及调用举例
[Python] 纯文本查看 复制代码 #测试函数的定义及调用
def test01():
print('*'*10)
print('/'*10)
print(id(test01))
print(type(test01))
test01()
test01() #可以反复调用
test01()
返回结果为:
2406171799408
<class 'function'>
**********
//////////
**********
//////////
**********
//////////
函数可以反复调用,且函数也属于对象
形参和实参:
形式参数:定义函数时的变量
实际参数:调用函数式,传递的参数
[Python] 纯文本查看 复制代码 #测试形参和实参
def printMax(a,b):#变量a,b为形式参数,多个变量用“,”隔开
'''实现两个数的比较,输出较大值'''#文档注释,用以解释说明
if a<b:
print(b,'较大值')
else:
print(a,'较大值')
printMax(10,20) #此处10,,20为实际参数,调用过程中相当于把10,20分别传递给变量a,b
输出结果:20 较大值
以上实例中,变量a,b就是形式参数,printMax(10,20)中的10,20就是实际参数
注意形参列表和实参列表必须一一对应
文档字符串:
用三个单引号或者三个双引号来实现,中间加入多行文字进行说明该函数
可以用help(函数名.__doc__)查看该函数的说明
[Python] 纯文本查看 复制代码 #文档字符串
def print_star(n):
'''根据传入的n,但因多个星号'''
print('*'*n)
help(print_star.__doc__)#输出打印该函数的文档字符串
返回结果为:No Python documentation found for '根据传入的n,但因多个星号'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.
返回值:
要点:1、如果函数体中包含return语句,则结束函数执行并返回值;
2、如果函数体中不包含return语句,则返回None值;
3、要返回多个返回值,使用列表、元组、字典、集合将多个值存起来即可。
[Python] 纯文本查看 复制代码 #测试返回值
def print_star(n):
print('*'*n) #无return语句,则返回None值
print(print_star(5))
返回结果为:*****
None
这是一个无return语句的函数,返回值为None。
[Python] 纯文本查看 复制代码 def add(a,b):
print('计算{0},{1}的和为:{2}'.format(a,b,a+b))
return a+b
print('hello')
print(add(30,40))
返回结果为:计算30,40的和为:70
70
这是一个有return语句的函数,返回值为a+b,且并未打印hello,说明return语句有结束函数的功能
函数也是对象:
Python中,“一切皆对象”。实际上,执行def定义函数后,系统就创建了相应的函数对象
[Python] 纯文本查看 复制代码 def print_star(n):
'''根据输入的n,打印对应数量的星号'''
print('*'*n)
print_star(5) #括号实际起到调用的作用
c = print_star #将函数print_star赋值给c
c(5)
print(id(print_star))
print(id(c))
print(type(c))
返回结果为:*****
*****
2873457176432
2873457176432
<class 'function'>
从该实例中我们可以发现将print_satr赋值给c后,两者内存地址一样,且c的类型也是函数,可以说明函数也是对象,可以作为参数来传递,也可以作为返回值来返回
好了,笔记结束,关于函数是对象这块有点没听明白,不太清楚写的对不对,有不对的地方欢迎打来批评指正 |