1.初始函数
函数到底是啥
多行代码块的集合, 需要使用的时候可以通过函数名来使用,比如print()
1.11定义函数
def 函数名(参数1,参数2,...):
"""说明参数"""
函数体
return 值
函数名()
# 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
# 括号内定义参数,参数是可有可无的,且无需指定参数的类型;
# 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
# 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
# 函数内容以冒号 : 起始,并且缩进。
# return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
举例
def choice_hero():
print('王昭君')
print('安其拉')
....
choice_hero()
>>>王昭君
>>>安其拉
什么时候会用到函数
需要多次去使用, 又不需要一直使用的
def choice_hero():
"""第一把选择安其拉"""
pass
def choice_hero():
"""第二把选择王昭君"""
pass
def choice_hero():
"""第三把选择安其拉"""
pass
def choice_hero(poke_list):
"""第四把选择王昭君"""
pass
def choice_hero():
"""第五把选择安其拉"""
2. 函数参数
2.1 参数
在定义函数时,如果在括号中添加变量
,我们称它为函数的形式参数:
- 必需参数
- 关键字参数
- 默认参数
- 不定长参数
必需参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用 choice_hero() 函数,你必须传入一个参数,不然会出现语法错误:
def cho(str):
"""放屁如打雷, 轰天裂地罗三炮"""
print(str)
cho() # TypeError: cho() missing 1 required positional argument: 'str'
2.2默认参数
def func(a1, a2, a3=10):
print(a1 + a2 + a3)
# 位置传参
func(8, 19)
func(1, 2, 99)
# 关键字传参(位置和关键混合时,关键字传参要在后面)
func(12, 9, a3=90)
func(12, a2=9, a3=90)
func(a1=12, a2=9, a3=90)
2.3 动态参数
- 一个 "*"号,
def func(*args):
print(args) # 元组类型 (22,) (22,33,99,) ()
# 只能按照位置传参
func(22)
func(22,33)
func(22,33,99)
func()
- 两个"**"号
def func(**kwargs):
print(kwargs) # 字典类型 {"n1":"Kevin"} {"n1":"Kevin","age":"18","email":"Kevin@163.com"} {}
# 只能按关键字传参
func(n1="Kevin")
func(n1="Kevin",age=18)
func(n1="Kevin",age=18,email="Kevin@163.com")
-
一个*和两个**一起使用
def func(*args,**kwargs): print(args,kwargs) func(22,33,99) func(n1="Kevin",age=18) func(22,33,99,n1="Kevin",age=18) func() 输出结果: (22, 33, 99) {} () {'n1': 'Kevin', 'age': 18} (22, 33, 99) {'n1': 'Kevin', 'age': 18} () {}
注意事项
# 1. ** 必须放在 * 的后面 def func1(*args, **kwargs): print(args, **kwargs) # 2. 参数和动态参数混合时,动态参数只能放在最后。 def func2(a1, a2, a3, *args, **kwargs): print(a1, a2, a3, args, **kwargs) # 3. 默认值参数和动态参数同时存在 def func3(a1, a2, a3, a4=10, *args, a5=20, **kwargs): print(a1, a2, a3, a4, a5, args, kwargs)
3. 参数返回值
函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回
def stu_register(name, age, course='PY' ,country='CN'):
print("----注册学生信息------")
print("姓名:", name)
print("age:", age)
print("国籍:", country)
print("课程:", course)
if age > 22:
return False
else:
return True
registriation_status = stu_register("王山炮",22,course="PY全栈开发",country='JP')
if registriation_status:
print("注册成功")
else:
print("too old to be a student.")
注意
-
函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
-
如果未在函数中指定return,那这个函数的返回值为None
-
函数一旦遇到return就会立即退出函数(终止函数中的所有代码)
def func(): print(1) return "结束吧" print(2) ret = func() print(ret)