目录
- 一、函数的介绍
- 1.学习目标
- 2. 什么是函数
- 3.本节的演示
- 4.为什么要学习、使用函数
- 5.本小节的总结
- 二、函数的定义
- 1.学习目标
- 2.函数的语法
- 3.本节的代码演示
- 4.本小节的总结
- 5.练习案例:自动查核酸
- 三、函数的参数
- 1.学习目标
- 2.如何控制函数的传参
- 3.本节的代码演示
- 4.本小节的总结
- 5.练习案例:升级版自动查核酸
- 四、函数的返回值
- 4.1 函数返回值的定义
- 1.学习目标
- 2.什么是返回值
- 3.返回值的使用语法
- 4.本节的代码演示
- 5.本小节的总结
- 4.2 None类型
- 1.什么是None类型
- 2.None类型的应用场景
- 3.本节的代码演示
- 4.本小节的总结
- 五、函数说明文档
- 1.学习目标
- 2.函数的说明文档
- 3.在PyCharm中查看函数说明文档
- 4.本节的代码演示
- 5.本小节的总结
- 六、函数的嵌套调用
- 1.学习目标
- 2. 什么是函数的嵌套
- 3.本节的代码演示
- 4.本小节的总结
- 七、变量的作用域
- 1.学习目标
- 2.局部变量
- 3.全局变量
- 4.本节的代码演示
- 5.关键字global
- 6.本小节的总结
- 八、综合案例:黑马ATM
- 1.案例效果
- 2.本节的代码演示
说明:该文章是学习 黑马程序员在B站上分享的视频 黑马程序员python教程,8天python从入门到精通而记录的笔记,笔记来源于本人。 若有侵权,请联系本人删除。笔记难免可能出现错误或笔误,若读者发现笔记有错误,欢迎在评论里批评指正。此笔记对应的doc文件的百度网盘下载链接为 Python入门(黑马)的学习笔记,提取码:1b3k。
一、函数的介绍
1.学习目标
快速体验函数的使用;了解函数的作用。
2. 什么是函数
如图所示,函数的定义比较官方,读起来有点空,不够通俗易懂。需结合图中实例以及进行函数的演示来理解。
3.本节的演示
先打开软件,创建一个名为“05_Python的函数”的文件夹,并创建一个名为“01_函数快速体验”的py文件。
编写代码并运行。代码如下,可参考注释进行理解,会发现有很多重复的代码,这是由于没有将具有相同功能的程序段定义成函数的缘故。
"""
演示:快速体验函数的开发及应用
"""
# 需求,统计字符串的长度,不使用内置函数Len()
str1 = "itheima"
str2 = "itcast"
str3 = "python"
# 定义一个计数的变量
count = 0
for i in str1:
count += 1
print(f"字符串{str1}的长度是:{count}")
count = 0
for i in str2:
count += 1
print(f"字符串{str1}的长度是:{count}")
count = 0
for i in str3:
count += 1
print(f"字符串{str1}的长度是:{count}")
重新编写代码并运行。代码如下,可参考注释进行理解,会发现代码变得简洁高效。这个函数将计算字符串长度的功能给封装了起来。
"""
演示:快速体验函数的开发及应用
"""
# 需求,统计字符串的长度,不使用内置函数Len()
str1 = "itheima"
str2 = "itcast"
str3 = "python"
# # 定义一个计数的变量
# count = 0
# for i in str1:
# count += 1
#
# print(f"字符串{str1}的长度是:{count}")
#
# count = 0
# for i in str2:
# count += 1
#
# print(f"字符串{str1}的长度是:{count}")
#
# count = 0
# for i in str3:
# count += 1
#
# print(f"字符串{str1}的长度是:{count}")
# 可以使用函数,来优化这个过程 后面会讲函数的语法,暂时看不懂语法没关系
def my_len(data):
count = 0
for i in data:
count += 1
print(f"字符串{data}的长度是{count}")
my_len(str1)
my_len(str2)
my_len(str3)
4.为什么要学习、使用函数
5.本小节的总结
二、函数的定义
1.学习目标
掌握函数的基础定义语法。
2.函数的语法
如图,函数包含5个部分,即关键字def、函数名、传入参数、函数体、返回值。一个函数至少包括关键字def、函数名、函数体3个部分。
3.本节的代码演示
先打开软件,创建一个名为“02_函数定义”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
"""
演示函数的定义语法
"""
# 定义一个函数,输出相关信息
def say_hi():
print("Hi 我是黑马程序员,学Python来黑马")
# 调用函数,让定义的函数开始工作
say_hi()
4.本小节的总结
5.练习案例:自动查核酸
进行代码的演示(为了便于管理文件,先将本节之前的代码文件改成“02_1_函数定义”):
创建一个名为“02_2_ 函数基础定义练习案例”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
"""
演示函数基础定义练习案例:自动查核酸
"""
# 定义函数
def check():
# 编写函数体输出信息
print("欢迎来到黑马程序员!\n请出示您的健康码以及72小时核酸证明!")
# 调用函数
check()
三、函数的参数
1.学习目标
掌握函数传入参数的使用。
2.如何控制函数的传参
3.本节的代码演示
先打开软件,创建一个名为“03_函数的参数”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
"""
演示函数使用参数
"""
# 定义3数相加的函数,通过参数接收被计算的2个数字
def add(x, y, z):
result = x + y + z
print(f"{x} + {y} + {7}的计算结果是:{result}")
# 调用函数,传入被计算的3个数字
add(5, 6, 7)
4.本小节的总结
5.练习案例:升级版自动查核酸
进行代码的演示(为了便于管理文件,先将本节之前的代码文件改成“03_1_函数的参数”):
创建一个名为“03_2_ 函数的参数练习案例”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
"""
演示函数的参数练习案例:升级自动查核酸
"""
# 定义函数,接收1个形式参数,数字类型,表示体温
def check(num):
# 在函数体内进行判断体温
print("欢迎来到黑马程序员!\n请出示您的健康码以及72小时核酸证明,并配合测量体温!")
if num < 37.5:
print(f"体温测量中,您的体温是:{num}度,体温正常请进!")
else:
print(f"体温测量中,您的体温是:{num}度,需要隔离!")
# 调用函数,传入实际参数
check(37.3)
四、函数的返回值
4.1 函数返回值的定义
1.学习目标
掌握函数返回值的作用;掌握函数返回值的定义语法。
2.什么是返回值
3.返回值的使用语法
4.本节的代码演示
创建一个名为“04_1_ 函数的返回值定义语法”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。会发现,函数在遇到return后,就返回函数的值,然后不会再执行函数后面的语句。
"""
演示:定义函数返回值的语法格式
"""
# 定义一个函数,完成2数相加功能
def add(a, b):
result = a + b
# 通过返回值,将相加的结果返回给调用者
return result
# 返回结果后,还想输出一句话 函数在遇到return后,就返回函数的值,然后不会再执行函数后面的语句
print("我完事了")
# 函数的返回值,可以通过变量去接收
r = add(5, 6)
print(r)
5.本小节的总结
4.2 None类型
1.什么是None类型
2.None类型的应用场景
3.本节的代码演示
创建一个名为“04_2_None”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
"""
演示特殊字面最:None
"""
# 无return语句的函数返回值
def say_hi():
print("你好呀")
result = say_hi()
print(f"无返回值函数,返回的内容是:{result}")
print(f"无返回值函数,返回的内容类型是:{type(result)}")
# 主动返回None的函数
def say_hi2():
print("你好呀")
return None
result = say_hi2()
print(f"无返回值函数,返回的内容是:{result}")
print(f"无返回值函数,返回的内容类型是:{type(result)}")
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),体会None的应用场景。
"""
演示特殊字面最:None
"""
# # 无return语句的函数返回值
# def say_hi():
# print("你好呀")
#
#
# result = say_hi()
# print(f"无返回值函数,返回的内容是:{result}")
# print(f"无返回值函数,返回的内容类型是:{type(result)}")
#
#
# # 主动返回None的函数
# def say_hi2():
# print("你好呀")
# return None
#
#
# result = say_hi2()
# print(f"无返回值函数,返回的内容是:{result}")
# print(f"无返回值函数,返回的内容类型是:{type(result)}")
# None用于if判断
def check_age(age):
if age > 18:
return "SUCCESS"
else:
return None
result = check_age(16)
if not result:
# 进入if表示result是Wone值也就是False
print("未成年,不可以进入")
# None用于声明无初始内容的变量
name = None
4.本小节的总结
五、函数说明文档
1.学习目标
掌握通过注释对函数进行解释说明。
2.函数的说明文档
需要注意一个细节,如下图所示,在函数后输出3对双引号后,按回车(即Enter键)会自动形成函数的说明注释,剩余内容再手动补齐就行。
3.在PyCharm中查看函数说明文档
注:需悬停等2秒左右。
4.本节的代码演示
先打开软件,创建一个名为“05_函数的说明文档”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
5.本小节的总结
六、函数的嵌套调用
1.学习目标
掌握函数的嵌套调用;理解嵌套调用的执行流程。
2. 什么是函数的嵌套
3.本节的代码演示
先打开软件,创建一个名为“06_函数的嵌套调用”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
"""
演示嵌套调用函数
"""
# 定义函数func_b
def func_b():
print("---2---")
# 定义函数fUnc_a,并在内部调用fUnc_b
def func_a():
print("---1---")
# 嵌套调用时func-b
func_b()
print("---3---")
# 调用函数func_a
func_a()
4.本小节的总结
七、变量的作用域
1.学习目标
知道什么是局部变量;知道什么是全局变量。
2.局部变量
3.全局变量
如图,全局变量可以定义在函数外的前面。
4.本节的代码演示
先打开软件,创建一个名为“07_变量的作用域”的py文件。
如下的** !!错误!! **代码,运行它,可验证函数里的局部变量(num)出了函数体后会被销毁,无法使用的现象。
"""
演示在函数使用的时候,定义的变量的作用域
"""
# 演示局部变量
def test_a():
num = 100
print(num)
test_a()
print(num)
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),可体会全局变量的使用范围。
"""
演示在函数使用的时候,定义的变量的作用域
"""
# # 演示局部变量
# def test_a():
# num = 100
# print(num)
#
#
# test_a()
# # 出了函数体,局部变量就无法使用
# # print(num)
# 演示全局变量
num = 200
def test_a():
print(f"test_a:{num}")
def test_b():
print(f"test_b:{num}")
test_a()
test_b()
print(num)
5.关键字global
如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),可体会关键字global的用法及作用。
"""
演示在函数使用的时候,定义的变量的作用域
"""
# # 演示局部变量
# def test_a():
# num = 100
# print(num)
#
#
# test_a()
# # 出了函数体,局部变量就无法使用
# # print(num)
# # 演示全局变量
# num = 200
#
#
# def test_a():
# print(f"test_a:{num}")
#
#
# def test_b():
# print(f"test_b:{num}")
#
#
# test_a()
# test_b()
# print(num)
# global关键字,在函数内声明变量为全局变量
num1 = 200
num2 = 200
def test_a():
num1 = 300 # 局部变量
print(f"test_a:{num1}")
def test_b():
global num2 # 设置内部定义的变量为全局变量
num2 = 500
print(f"test_b:{num2}")
test_a() # 结果:300
test_b() # 结果:500
print(num1) # 结果:200
print(num2) # 结果:500
6.本小节的总结
八、综合案例:黑马ATM
1.案例效果
2.本节的代码演示
先打开软件,创建一个名为“08_函数综合案例”的py文件。
编写代码并运行。代码如下,可参考注释进行理解。
"""
演示函数综合案例开发
"""
# 定义全局变量money,name
money = 5000000
name = None
# 要求客户输入姓名
name = input("请输入您的姓名:")
# 定义查询函数
def query(show_header):
if show_header:
print("---------查询余额--------")
print(f"{name},您好,您的余额剩余:{money}元")
# 定义存款函数
def saving(num):
global money
# money在函数内部定义为全局变量
money += num
print("-----------存款-----------")
print(f"{name},您好,您存款{num}元成功。")
# 调用query函数查询余额
query(False)
# 定义取款函数
def get_money(num):
global money
money -= num
print("---------取款---------")
print(f"{name},您好,您取款{num}元成功。")
# 调用query函数查询余额
query(False)
# 定义主菜单函数
def main():
print("---------主菜单---------")
print(f"{name},您好,欢迎来到黑马银行ATM。请选择操作:")
print("查询余额\t[输入1]")
print("存款\t\t[输入2]") # 通过\t制表符对齐输出
print("取款\t\t[输入3]")
print("退出\t\t[输入4]")
return input("请输入您的选择:")
# 设置无限循环,确保程序不退出
while True:
keyboard_input = main()
if keyboard_input == "1":
query(True)
continue # 通过continue继续下一次循环,一进来就是回到了主菜单 其实可以不加
elif keyboard_input == "2":
num = int(input("您想要存多少钱?请输入:"))
saving(num)
continue
elif keyboard_input == "3":
num = int(input("您想要取多少钱?请输入:"))
get_money(num)
continue
else:
print("程序退出啦")
break # 通过break退出循环
好了,本章的笔记到此结束,谢谢大家阅读。