【黑马python】基础 5.Python 函数:参数 返回值 嵌套
笔记汇总目录
Python 函数
函数的基础定义语法
-
要素:def、函数名()、参数、冒号、函数体、return
- 可省略:参数和return
- 不可省略:参数省略时,小括号不可省略
-
函数使用顺序:先定义,后调用
-
练习
-
代码示例
def say_hi(): print("欢迎来到黑马程序员!") print("请出示您的健康码以及72小时核酸证明!") # print("第一行\n第二行") # 调用函数 say_hi() """ 欢迎来到黑马程序员! 请出示您的健康码以及72小时核酸证明! """
函数的传入参数
-
函数的参数:逗号隔开,数量不限
-
实参:和形参一一对应,否则报错
-
代码示例
def add(a, b): res = a + b print(f"{a} + {b}的计算结果是:{res}") add(1, 3) # 1 + 3的计算结果是:4 add(156, 3820) # 156 + 3820的计算结果是:3976
-
练习:升级版测体温
-
代码示例
# 函数定义 def say_hi(temp): print("欢迎来到黑马程序员!\n请出示您的健康码以及72小时核酸证明!") if temp <= 37.5: print(f"您的体温是:{temp},体温正常请进!") # 您的体温是:36.5,体温正常请进! else: print(f"您的体温是:{temp},需要隔离!") # 您的体温是:37.6,需要隔离! # 调用函数 say_hi(36.5)
函数的返回值
-
函数返回值:函数执行完成后,返回给调用者的结果
-
关键字:return
-
return结束函数体:return后的代码不执行
-
代码示例
# 函数的返回值 def add(a, b): return a + b # print("add功能已完成") # return后的代码不执行 res = add(12, 34) # 46 print(res)
函数返回值的None类型
-
没有返回值:返回了字面量None,表示返回了“空”
-
此时,None的类型:<class 'NoneType'>
-
None:可以主动使用return语句,效果等同于不写return语句:`return None
-
代码示例
# 返回值为None def say_hi(): print("hello") # return None # 不写return语句,等同于:写了这句 res = say_hi() print(f"返回值res为:{res},res的类型为:{type(res)}") # 返回值res为:None,res的类型为:<class 'NoneType'>
-
None的应用场景
-
3类:函数返回值;if判断中;变量定义(声明无内容变量)
-
-
代码示例:None在if中的应用
# None在if中的应用:None 等同于 False def check_age(age): if age > 18: return "success" # 这里是return,否则按无return,无论什么结果,都会返回None else: return None res = check_age(17) print(res) if not res: print("未成人,不可进入")
-
代码示例:None用于声明无初始内容的变量
name = None
函数的说明文档
-
文档内容:函数作用、参数意义、返回值意义
-
代码示例
def add(a, b): """ add函数:接受2个参数,进行两数相加的功能 :param a: 形参a表示相加的一个因子 :param b: 形参b表示相加的另一个因子 :return: 返回值是两数相加的结果 """ return a + b # print("add功能已完成") # return后的代码不执行 res = add(12, 34) # 46 print(res)
函数的嵌套调用
-
函数嵌套:一个函数中,又调用了另一个函数
-
执行顺序:执行完 被调用函数 的全部语句后,继续执行 本函数
-
代码示例
# 函数嵌套 def func_b(): print("--2-- 被调用函数") def func_a(): print("--1-- 本函数的第一句") func_b() # 执行b print("--3-- 本函数继续执行") func_a() # --1-- 本函数的第一句 # --2-- 被调用函数 # --3-- 本函数继续执行
变量在函数中的作用域
-
变量作用域:变量的作用范围,哪里可用,哪里不可用
-
局部变量:定义在函数内,只能在函数内使用的临时变量,函数调用结束即变量销毁
-
全局变量:定义在函数外,在函数内外都能使用的变量
-
global 关键字
-
代码示例:没有定义 global 时
# 变量作用域:局部变量,全局变量,global关键字 num = 124 def test1(): print(f"test1: {num}") def test2(): num = 456 # 此处的num:相当于不同于第一句的全局变量num的另一个变量 print(f"test2: {num}") test1() # test1: 124 test2() # test2: 456 print(num) # 124
-
代码示例:使用 global 时
# 变量作用域:局部变量,全局变量,global关键字 num = 124 def test1(): print(f"test1: {num}") def test2(): global num # 将num变量声明为全局变量 num = 456 # 此处的num:相当于第一句的全局变量num print(f"test2: {num}") test1() # test1: 124 test2() # test2: 456 print(num) # 456
函数综合案例
-
-
代码示例
# 函数综合案例: ATM # 注意:和老师的代码稍有差别,同样可以实现要求的效果 money = 5000000 def menu(): print("----------------主菜单------------------") print(f"{name},您好,欢迎来到黑马银行ATM。请选择操作:") print("查询余额\t[输入1]") print("存款\t\t[输入2]") # 2个制表符可以对齐 print("取款\t\t[输入3]") print("退出\t\t[输入4]") num = int(input("请输入您的选择:")) # global money # 这里反而不用写global if num == 1: check_money(True) menu() elif num == 2: num = int(input("请输入存款金额:")) save_money(num) menu() elif num == 3: num = int(input("请输入取款金额:")) get_money(num) menu() else: print("------------------退出-------------------") def check_money(flag): if flag: print("----------------查询余额------------------") print(f"{name},您好,您的余额是:{money}元") def save_money(num): global money # money在函数内定义为全局变量 money += num print("------------------存款-------------------") print(f"{name},您好,您存款{num}元") check_money(False) # print(f"{name},您好,您的余额是:{money}元") def get_money(num): global money money -= num print("------------------取款-------------------") print(f"{name},您好,您取款{num}元") check_money(False) # print(f"{name},您好,您的余额是:{money}元") name = input("请输入您的姓名:") menu()