PYTHON小白笔记08

116 阅读4分钟

--此系列主要记录一些本人作为一个小白在python学习上遇到的一些重要知识点和易错点的总结,开坑,希望能够坚持到学有所成。

day08:函数

一·定义格式以及特点

核心内容:\

#定义
def 函数名(形参):
	函数体
	return 返回值

#调用
变量接收返回值 = 函数名(实参)

函数注意事项:
1.函数必须先定义,再调用

2.函数不调用,不执行

3.函数的参数和返回值根据需求确定是否含有

4.定义函数时的写好的参数叫形参(形式参数)

5.调用函数时的传入的参数叫实参(实际参数)

6.定义函数时,如果没有书写return 返回值,本质是默认是return None

7.定义函数时,如果手动写了return 返回值,调用的时候建议用变量接收

二·返回值

return关键字: 主职:结束当前正在执行的函数,return后的代码不会执行 兼职:把return后的返回值,返回给调用者

return 多个返回值: 默认把多个返回值放到元组中返回给调用者

示例:

# return主职:结束当前正在执行的函数  兼职:把return后的返回值,返回给调用者
# 先定义函数
def show1():
    return 10
    return 20  # 报黄警告:此行无法访问(不会执行到此行)


def show2():
    return 10, 20


# 再调用函数
num = show1()
print(num, type(num))  # 10 <class 'int'>
# 注意: 如果return 值1,值2 ,默认把值1,值2放到元组中返回
num_tuple = show2()
print(num, type(num_tuple))  # (10, 20) <class 'tuple'>
# 元组拆包
x, y = num_tuple
print(x, y)

三·函数的参数以及传参方式

函数中常见四种参数:
1.位置参数

2.关键字参数

3.缺省参数

4.可变参数

位置参数

注意:
1.位置参数传参,形参和实参必须一一对应

2.顺序必须一致,否则数据混乱赋值

3.个数必须一致,否则报错

# 1.先定义函数
def show(name, age, height):
    print(f'{name}的年龄是{age},身高是{height}cm')


# 2.再调用函数
show('张三', 18, 178.8)
show('李四', 28, 168.8)
show('李四', 168.8, 28)# 身高和年龄混乱赋值
show('李四', 168.8) # 报错

关键字参数

注意:
1.关键字参数传参,形参和实参个数必须一致

2.顺序可以不一致

3.个数必须一致,否则报错

# 1.先定义函数
def show(name, age, height):
    print(f'{name}的年龄是{age},身高是{height}cm')
    
# 注意:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序    
show('李四', age=28, height=168.8)

缺省参数

注意:
1.缺省参数已经提前设置了默认值,如果调用的时候又传入了参数,以传入的为主

2.缺省参数由于已经提前设置了默认值,所以个数可以不一致,如果调用的时候又传入了参数,以传入的为主

def show(name, age=18, height=188.8):
    print(f'{name}的年龄是{age},身高是{height}cm')

show(name='李四')

可变参数

1.*args:把传入的多个值,存放到args元组中

2.**kwargs :把传入的多个键值对,存放到kwargs字典中

def show1(*args):
    print(args)


def show2(**kwargs):
    print(kwargs)


# 2.再调用函数
show1(1, 2, 3, 4)  # (1, 2, 3, 4)
show2(a=1, b=2, c=3, d=4)  # {'a': 1, 'b': 2, 'c': 3,'d':4}

注意:如果是直接将列表字典作为实参传入,需要先拆包

示例:

# 需求:定义一个函数,完成任意个数/格式的数字求和功能
# 1.先定义函数
# *args:把传入的多个值,存放到args元组中
# **kwargs:把传入的多个键值对,存放到kwargs字典中
def get_sum(*args, **kwargs):
    # print(args)
    # print(kwargs)
    # 循环外定义sum,初始0
    sum = 0
    # 遍历元组
    for i in args:
        # 循环内累加i求和
        sum += i
    # 遍历字典
    for i in kwargs.values():
        # 循环内累加i求和
        sum += i
    # 循环外使用最终结果
    return sum


# 2.再调用函数
# 需求: 已知列表和字典,要求求列表所有值和字典中所有值的和
list1 = [1, 2, 3]
dict1 = {'a': 4, 'b': 5, 'c': 6}

# 方式1: 直接传入
he = get_sum(1, 2, 3, a=4, b=5, c=6)
print(he)

# 方式2: 使用*和**自动拆分
he = get_sum(*list1, **dict1)
print(he)