# 函数把独立的代码块写入函数里重复使用
'''
def 函数名(): # 注意:函数名定义遵守标识符规范
代码块
调用函数
函数名()
总结:
1、函数的作用:更高效的避免代码的重用,将重用的代码封装到函数中
2、函数的注意事项:
2.1函数先定义后调用,如果说先调用后定义(会报错)
2.2如果没有调用函数,只定义函数,函数体内部的代码是不会执行的
3、函数的执行流程:
当调用函数的时候,解释器回到定义的地方去执行下面缩进的代码
当这些代码执行完之后,才会回到调用的地方继续执行
'''
# return 会给函数的执行返回值
# 注意:使用return需要通过print打印出来
def bag():
# 定义变量保存里面的物品
a = '键盘'
b = '鼠标'
c = '显示器'
return a, b, c
# 调用函数
print(bag())
# return后面可以跟任意对象,甚至可以是一个函数
def funa():
num = 10
list1 = ['a', 'b']
dict1 = {'name': 'Ustinian'}
return num, list1, dict1, bag()
print(funa())
# 注意:如果函数返回自己会报错,递归错误,递归超出了最大深度
def add(a, b): # a, b是形参
return a + b
print(add(3, 5))
# 传参:实参传给形参
# 形参写在定义函数的位置,仅在函数体内有效
# 实参写在函数调用的位置
# 1.必备参数(位置参数),写了几个参数就必须传递几个值
def fin1(name1, name2):
print(name1)
print(name2)
fin1('Ustinian', 'love')
# 2.默认参数
def fin2(name, age=20):
print(f'我是{name},今年{age}了')
fin2('Ustinian')
fin2('Ustinian', 21)
# 总结:设置了默认值,没有传值会根据默认值来执行,传了值根据你传入的值来执行代码
# 注意:默认值需要定义在参数的最后面,不然会报错,可以有多个默认值
# 3.可变参数*args,传入值的数量是可以改变的,可以传入多个,也可以不传入
# *args:前面的*有特殊意义的,args只是一个普通的形参,以元组的形式接收
def fin3(*args):
print(args)
print(type(args))
fin3() # 注意:不加参数是默认空元组
fin3('Ustinian', '666', '888')
# 注意:可以将args改成其他的参数名,比如a,b,c,但是args符合代码的规范性
# 4.关键字参数
# **kwargs:前面的**有特殊意义,kwargs是一个普通的形参,以字典的形式接收
def fin4(**kwargs):
print(kwargs)
print(type(kwargs))
fin4() # 注意:不加参数是默认空字典
# fin4('Ustinian', 21) # 报错,要采用键等于值的形式
fin4(name='Ustinian', sex='男', age=21)
# 函数嵌套:一个函数中还有函数
# 1.1 函数调用:在一个函数里面调用另外一个函数
# 例如:在函数b里面调用函数a
def funa():
print('---a---')
print('这是a函数')
def funb():
print('---b---')
print('这是b函数')
funa()
funb()
# 1.2 函数嵌套定义:在一个函数中定义另外一个函数
def fun1():
print('---a---')
print('这是a函数')
def fun2():
print('---b---')
print('这是b函数')
fun2()
fun1()
Python之函数
最新推荐文章于 2024-11-05 15:28:12 发布