14-1 函数定义与默认值
2019-07-12 本文已影响3人
BeautifulSoulpy
我们总在感叹生活的苦,抱怨命运对我们的过分苛求,可是你看,这世上哪有真正的顺风顺水,每个人都在负重前行!
1.函数
1.1 函数
数学定义:y=f(x) ,y是x的函数,x是自变量。y=f(x0, x1, ..., xn)
Python函数
def add(x,y): #def 标识符;参数:x,y为形参
return(x+y) # return 函数返回值
add(2,3)
#调用必须要有小括号;调用送实参进去;
# 2,3为实参
# print()本身没有返回值(none,none也是一个合法数据),只是有打印的作用
print(print(add(2,3)))
Python语言的坏处: (语言规范,掌控这个动态性就是好处)
print(add([1],[2])) #动态语言:控制不了传入的参数是什么类型;
print(add('a','b'))
----------------------------------------------------------------------------
5
None
[1, 2]
ab
由若干语句组成的语句块、函数名称、参数列表构成,它是组织代码的最小单元
完成一定的功能
1.2 函数的作用
1. 结构化编程对代码的最基本的封装,一般按照功能组织一段代码
2. 封装的目的为了复用,减少冗余代码
3. 代码更加简洁美观、可读易懂
1.3 函数的分类
内建函数,如max()、reversed()等
库函数,如math.ceil()等
lambda 表达式 匿名函数
2.函数定义、调用
2.1 def语句定义函数
def 函数名(参数列表):
函数体(代码块)
[return 返回值]
1.函数名就是标识符,命名要求一样
2.语句块必须缩进,约定4个空格
3.Python的函数没有return语句,隐式会返回一个None值
4.定义中的参数列表成为形式参数,只是一种符号表达,简称形参
查看是否可调用callable
print(callable(add)) #函数是否可调用
callable(add(4,5)) # 9是否可调用;
---------------------
True
False
2.2调用
1.函数定义,只是声明了一个函数,它不会被执行,需要调用
2.调用的方式,就是函数名加上小括号,括号内写上参数
3.调用时写的参数是实际参数,是实实在在传入的值,简称实参
3.函数参数
参数调用时传入的参数要和定义的个数相匹配(可变参数例外)
位置参数
- def f(x, y, z) 调用使用 f(1, 3, 5)
- 按照参数定义顺序传入实参
关键字参数
- def f(x, y, z) 调用使用 f(x=1, y=3, z=5)
- 使用形参的名字来出入实参的方式,如果使用了形参名字,那么传参顺序就可和定义顺序不同
传参
要求位置参数必须在关键字参数之前传入,位置参数是按位置对应的
f(z=None, y=10, x=[1])
f((1,), z=6, y=4.1)
f(y=5, z=6, 2) #
4.函数参数默认值
4.1参数默认值(缺省值)
定义时,在形参后跟上一个值
def add(x=4, y=5):
return x+y
测试调用 add(6, 10) 、add(6, y=7) 、add(x=5) 、add()、add(y=7)、 add(x=5, 6) 、add(y=8, 4)、add(x=5, y=6)、add(y=5, x=6)
测试定义后面这样的函数 def add(x=4,y)
4.2作用
- 参数的默认值可以在未传入足够的实参的时候,对没有给定的参数赋值为默认值
- 参数非常多的时候,并不需要用户每次都输入所有的参数,简化函数调用
举例
定义一个函数login,参数名称为host、port、username、password
def login(host='127.0.0.1',port='8080',username='wayne',password='magedu'):
print('{}:{}@{}/{}'.format(host, port, username, password))
login()
login('127.0.0.1', 80, 'tom', 'tom')
login('127.0.0.1', username='root')
login('localhost', port=80,password='com')
login(port=80, password='magedu', host='www')
---------------------------------------------------------------
127.0.0.1:8080@wayne/magedu
127.0.0.1:80@tom/tom
127.0.0.1:8080@root/magedu
localhost:80@wayne/com
www:80@wayne/magedu
总结:
1.函数的基本构成要素:def 标识符,括号,形参,实参,返回值;
2. 函数参数默认值中的:位置实参,关键字实参