Python学习之路,点击有全套Python笔记
函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求,可以实现更高效的代码复用
1. 基础用法
定义语法:
def 函数名([参数列表]):
“文档字符串” (注释)
函数体/若干语句
def test():
print('hello world')
test() # hello world
2. 形参与实参
- 先来体验一下传参
def test(name):
print(f'hello {name}')
test('bob') # hello bob
简单的说:
- 形参:定义函数时使用,当作局部变量(name)
- 实参:调用时,传递的叫实参(bob)
其中,实参又有细分
- 位置实参:调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参,为此,最简单的关联方式是基于实参的顺序,这种关联方式称为位置实参。
- 关键字实参:是传给函数的名称—键值对。直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆。关键字实参无序考虑调用顺序,还清楚地指出了函数调用各个值的用途
- 不定长参数(可变参数):用于不确定调⽤的时候会传递多少个参数(不传参也可以)的场景。
①. 位置实参(顺序必须是对的)
def Dog(type, name):
print(f'这是一条{type},名字叫{name}')
Dog('二哈','旺财') # 这是一条二哈,名字叫旺财
Dog('汪汪', '泰迪') # 这是一条汪汪,名字叫泰迪(很明显有哪里不对劲)
②.关键字实参
def Dog(type, name):
print(f'这是一条{type},名字叫{name}')
Dog(type='边牧',name='哈哈') # 这是一条边牧,名字叫哈哈
Dog(name='哈哈',type='边牧') # 这是一条边牧,名字叫哈哈
③.不定长参数
def makefood(*topping):
print(f'我的菜里不要{topping}')
makefood('香菜',) # 我的菜里不要('香菜',)
makefood('香菜','大蒜') # 我的菜里不要('香菜', '大蒜')
def user_info(**kwargs):
print(kwargs)
user_info(name='tom',job='doctor') # {'name': 'tom', 'job': 'doctor'}
3.默认值
默认值就是在定义函数时给形参一个默认的值。注意:如果前一个有默认值,则后面必须都有默认值,也就是必须先列出没有默认值的形参,再列出有默认值的
def Pet(pet_name, type='dog'):
print(f'this is a {type} name is {pet_name}')
Pet('哈哈') # this is a dog name is 哈哈
Pet('咪咪', 'cat') # this is a cat name is 咪咪
4. 返回值
函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值称为返回值—return,返回值可以简化主程序。
return返回值要点
1.如果函数中包含return语句,则结束函数执行并返回值
2.如果函数体中不包含return语句,则返回None值
3.要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”
- 基本使用
def sum (a, b):
c = a + b
return c
a = sum(1,2)
print(a) # 3
- 返回字典
def user(name, job, moeny=''):
person = {'Person_name': name, 'Person_job': job}
if moeny:
person['moeny'] = moeny
return person
users = user('jack','doctor','rich')
print(users) # {'Person_name': 'jack', 'Person_job': 'doctor', 'moeny': 'rich'}
- 传递列表
def hello_user(names):
for name in names:
msg = "hello" + " " + name
print(msg)
hello_user(['jack','rose','bob'])
5. 在函数中修改列表
# 学习函数
def langue(langue_list, learn_list):
while langue_list:
learn = langue_list.pop()
print(f'正在学习{learn}')
learn_list.append(learn)
# 汇报函数
def show(langue_list):
for i in langue_list:
print(f'学会了{i}')
langue_list = ['python', 'c++', 'java']
learn_list = []
langue(langue_list, learn_list)
while langue_list==[]:
show(learn_list)
break