Python函数基础

1-函数的概念

总结:

  • 函数是组织好的、可重复使用的、用来实现特定功能的代码段
  • 使用函数的好处:
    • 将功能封装在函数内,可供随时随地重复使用
    • 提高代码的复用性,减少重复代码,提高开发效率

2-函数的定义

总结:

  • 函数的定义语法
def 函数名(传入参数):
    函数体
    return 返回值
  • 函数的使用步骤
    • 先定义函数
    • 再调用函数
  • 函数的注意事项
    • 参数不需要,可以省略
    • 返回值不需要,可以省略

3-函数的参数

示例:

# 定义一个实现两值相加的函数
def add(x, y):
    result = x + y
    print(f"{x} + {y}的和为{x + y}")


# 调用函数并传参
add(2, 3)

总结:

  • 函数传入参数作用是为了在函数运行的时候,接收外部传入的数据
  • 注意事项:
    • 函数定义中的参数,称之为形式参数
    • 函数调用中的参数,称之为实际参数
    • 函数的参数数量不限,使用英文逗号分隔开
    • 传入参数的时候,实参要和形式参数一一对应,逗号隔开
# 先定义函数
def check_health(x):
    if x <= 37.5:
        print("欢迎来到游乐园!请出示你怕健康码以及72小时核酸证明,并配合测量体温!")
        print(f"体温测量中,您的体温是:{x}度,体温正常请进")
    else:
        print("欢迎来到游乐园!请出示你怕健康码以及72小时核酸证明,并配合测量体温!")
        print(f"体温测量中,您的体温是:{x}度,需要隔离")


# 获取用户的温度
x = float(input("请输入您的体温:"))
# 再调用函数
check_health(x)

4-函数的返回值

示例:

# 先定义函数
def add(x, y):
    result = x + y
    print(result)
    return result
	print('xxxxxx')


# 再调用函数
res = add(2, 3)
print(res)

总结:

  • 函数的返回值是函数在执行完成后,返回给调用者的结果
  • 返回值的应用语法:使用关键字return来返回结果
  • 注意:函数体在遇到return关键字之后就结束了,写return后的代码不会执行

None示例:

# 定义函数判断是否未成年
def check_age(age):
    if age > 18:
        return "success"
    else:
        return None


# 调用函数
res = check_age(19)
print(res)

# 根据函数结果判断是否让进入
# not None 为 True
if not res:
    print("您未成年不能进入该场所!!!")

总结:

  • None是类型‘NoneType’的字面量,用于表示:空的、无实际意义的
  • 函数如何返回None:
    • 不使用return语句时即返回None
    • 主动返回:return None
  • 使用场景
    • 设置函数返回值
    • if判断
    • 变量定义

5-函数说明文档

示例:

# 定义函数
def add(x, y):
    """
    这是一个两数相加的函数
    :param x: 这是第一个相加的数值
    :param y: 这是第二个相加的数值
    :return: 返回两数之和
    """
    result = x + y
    return result


# 调用函数
res = add(2, 3)

总结:

  • 函数说明文档是为方便对函数整体功能的解释,尤其是对参数和返回值的解释说明
  • 调用函数时,可以将鼠标光标悬浮在函数名上,就可以看到函数说明文档的注释,使用我们使用函数

6-函数的分类

def add():
    """
    这是一个无参无返回值的函数
    :return: None
    """
    print("这是一个无参无返回值的函数")


add()


def add(x, y):
    """
    这是一个有参无返回值的函数
    :param x: 这是第一个参数
    :param y: 这是第二个参数
    :return: None
    """
    print("这是一个有参无返回值的函数", x + y)


add(2, 3)


def add():
    """
    这是一个无参有返回值的函数
    :return: 返回一个固定的字符串
    """
    print("这是一个无参有返回值的函数")
    return "哈哈"


print(add())


def add(x, y, z):
    """
    这是一个有参有返回值的函数
    :param x: 这是相加的第一个数值
    :param y: 这是相加的第二个数值
    :param z: 这是相加的第三个数值
    :return: 三数之和
    """
    print("这是一个有参有返回值的函数")
    return x + y + z


print(add(1, 2, 3))

调试:

image-20240903170915697

7-变量的作用域

示例:

# 先定义函数
def test1():
    # 局部变量
    # global关键字可以将局部变量声明为全局变量
    global num
    num = 10
    # 使用局部变量
    # 就近原则:如果局部变量和全局变量同名,函数内优先使用局部变量
    print(num)


def test2():
    print(num)


if __name__ == '__main__':
    # 全局变量
    num = 100
    print(num)  # 100
    # 调用函数
    test1()
    test2()

    print(num)

总结:

  • 局部变量:只能在自定义的函数内的访问的变量
  • 全局变量:可以在任意函数内外都能访问的变量
  • 就近原则:如果局部变量与全局变量同名,函数内优先局部变量
  • global关键字可以将自定义函数中的局部变量声明为全局变量

8-综合案例

  • 需求分析
  • 定义一个全局变量:money,用来记录银行卡余额(默认5000000)
  • 定义一个全局变量:name,用来记录客户姓名(启动程序时输入)
  • 定义如下的函数:
    • 查询余额函数:query_balance()—打印变量money,并调用主菜单函数
    • 存款函数:save_money()—输入存钱数,与money累加,并调用主菜单函数
    • 取款函数:get_money()—输入取钱数,与money相减,并调用主菜单函数
    • 主菜单函数:main_menu()—一直循环(while True)根据用户输入选择项,调用对应的函数(查询(query_balance())、存款、取款)或者直接退出(break)
  • 要求:
    • 程序启动后要求输入客户姓名
    • 查询余额、存款、取款后都会返回主菜单
    • 存款、取款后,都应显示一下当前余额
    • 客户选择退出或输入错误,程序会退出,否则一直运行
# 定义全局变量
money = 500000
name = ""


def query_balance():
    """
    余额查询
    :return: None
    """
    print(f"{name}, 您好,您的余额为:{money}")
    # main_menu()


def save_money():
    """
    存款函数
    :return: None
    """
    global money
    # 从键盘录入存款金额
    amount = float(input("请输入您的存款金额:"))
    if amount <= 0:
        print("存款金额必须大于0")
    else:
        money += amount
        print(f"{name}, 您好,您的余额为:{money}")
    # main_menu()


def get_money():
    """
    取款函数
    :return: None
    """
    global money
    # 从键盘录入取款的金额
    amount = float(input("请输入您的取款金额:"))
    if amount <= 0:
        print("取款金额必须大于0")
    else:
        money -= amount
        print(f"{name}, 您好,您的余额为:{money}")
    # main_menu()


def main_menu():
    """
    主菜单函数,一直循环
    :return: None
    """
    while True:
        print('-' * 15 + '主菜单' + '-' * 15)
        print("查询余额:【输入1】")
        print("存   款:【输入2】")
        print("取   款:【输入3】")
        print("退   出:【输入4】")
        op_choice = input("请输入您的选择:")
        
        # 根据用户的选择调用对应的函数
        if op_choice == '1':
            query_balance()
        elif op_choice == '2':
            save_money()
        elif op_choice == '3':
            get_money()
        else:
            break



if __name__ == '__main__':
    """
    主程序入口
    """
    name = input("请输入您的姓名:")
    print(f"{name}您好,欢迎使用银行系统!!!")
    main_menu()

9-函数返回多值

return 值1, 值2, 值3…: 函数默认将多个值封装在一个元组中返回

# 1-定义函数
def show():
    return 1, 2, 3


# 2-调用函数
t = show()
print(t, type(t))
# 直接拆包接收
a, b, c = show()
print(a, b, c)

10-函数多种传参

示例:

  • 位置、关键字、缺省参数
# 1-定义函数
def show1(name, age, height):
    print(f"姓名: {name}, 年龄: {age}, 身高: {height}")


# 2-1调用函数,使用位置传参
# 注意:位置传参实参和形参的个数和顺序必须一致
show1(18, '张三', 183)

# 2-2调用函数,使用关键字传参
# 注意:关键字传参:k=v,要求形参和实参个数必须一致,但是顺序无所谓
# 如果位置传参和关键字传混用,位置参数必须在关键字参数前面
show1(age=18, height=183, name='李四')
show1('张三', age=18, height=183)


# 3-定义包含缺省参数的函数
def show2(name, age=18, height=188.8):
    print(f"姓名: {name}, 年龄: {age}, 身高: {height}")


# 3-1 调用函数,使用缺省参数传参
show2('张三')
show2('张三', 88)
show2('张三', 88)
show2('张三', height=158.6)

  • 不定长参数
# 1-1定义可变参数函数
def show1(*args):
    print(args)


# 1-2 调用可变参数函数
show1(1)
show1(1, 2)
show1(1, 2, 'a')


# 2-1 定义关键字传参的不定长参数
def show2(**kwargs):
    print(kwargs)


# 2-2 调用关键字传参的不定长参数的函数
show2(name='张三')
show2(name='张三', age=18)
show2(name='张三', age=18, gender='女')

总结:

  • 位置参数:调用函数时,要求实参与形参的顺序和个数必须保持一致
  • 关键字参数:调用函数时,k=v方式传参(形参=实参),只要求个数一致,顺序无所谓,但是如果位置和关键字参数混用,位置参数必须在关键字参数前面
  • 缺省参数:定义函数时,直接给形参设置默认值(形参=默认值),调用函数时可以省略不传实参
  • 可变参数:定义函数时,使用*args接收位置传参的内容,**kwargs接收关键字传参的内容
  • 需求:定义一个函数实现能对任意个数字进行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值