数据来源
01 函数介绍
函数
函数的快速体验
演示
"""
演示:快速体验函数的开发及应用
"""
# 需求,统计字符串的长度,不使用内置函数len()
str1 = "itheima"
str2 = "incast"
str3 = "python"
# 定义一个计算变量
count = 0
for i in str1:
count +=1
print(f"字符串{str1}的长度:{count}")
count = 0
for i in str2:
count +=1
print(f"字符串{str2}的长度:{count}")
count = 0
for i in str3:
count +=1
print(f"字符串{str3}的长度:{count}")
# 可以使用函数来优化这个过程
def my_len(data):
count = 0
for i in data:
count += 1
print(f"字符串{data}的长度:{count}")
print("---------------我是分割线--------------------")
my_len(str1)
my_len(str2)
my_len(str3)
总结
02 函数的基础定义语法
函数定义
演示
"""
演示函数的定义语法
"""
#定义一个函数,输出相关信息
def say_hi():
print("你好,李银河")
return 100 # 返回一个数字
num = say_hi() # 调用函数并使用num接收函数返回的数据
print(f"num = {num}")
总结
03 函数的参数
函数的传入参数
函数的传入参数 - 传参定义
演示
"""
演示函数使用参数
"""
#定义2数相加的函数,通过参数接收被计算的2个数字
def add(x,y):
print(f"{x}+{y}={x + y}")
# 调用函数,传入被计的2个数字
add(5,7)
函数的传入参数-语法解析
总结
04 函数的返回值定义语法
什么是返回值
返回值语法
演示
"""
演示:定义函数返回值的语法格式
"""
# 定义一个函数,完成2数相加功能
def add(x,y):
return x+y
# 通过返回值,将相加的结果返问给调用者
sum = add(5,7)
print(f"sum={sum}")
总结
05 函数返回值之None类型
None类型
演示
"""
演示:定义函数返回值值Node
"""
def say_hello():
print("Hello.. ")
# 使用变量接收 say_hello 函数的返回值
result =say_hello()
# 打印返回值
print(result) # 结果None
#打印返回值类型
print(type(result)) # 结果< class' Nonetype'>
# None可以主动使用 return返回,效果等同于不写 return语句:
def say_hello():
print("Hello...")
return None
# 使用变量接收 say_hello 函数的返回值
result = say_hello()
# 打印返回值
print(result) # 结果None
None类型的应用场景
演示
# None 用于if判断
def check_age(age):
if age >= 18:
return "恭喜恭喜你已经不是小朋友了"
else:
return None
result = check_age(int(input("请输入你的年龄:")))
if not result: # not 可以理解为反转,如果是false就会变成true,如果是true就会变成false
# 进入if表示result的值是None,也就是False
print("未成年人,不可以进游乐场哦")
else:
print("你已经成年了,可以进入游乐场")
# None 用于声明五初始值的变量
name = None
总结
06 函数的说明文档
函数的说明文档
演示
"""
演示对函数进行文档说明
"""
# 定义函数,进行文档说明
# 形参就是形式上的参数,如函数中用来接收数据的参数
# 实参就是实际上的参数,如调用函数时给函数传参的函数
def add(x,y):
"""
add 函数可以接受2个参数,进行2数相加的功能
:param x: 形参x表示相加其中的一个数字
:param y: 形参y表示相加的另一个数字
:return: 变量return存储两数相加的结果
"""
result = x + y
print(f"2数相加的结果是:{result}")
return result
add(2,65) # 2,65就是实参
总结
06 函数的嵌套调用
什么是函数的嵌套
演示
"""
演示嵌套调用函数
"""
# 定义函数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()
执行过程
总结
07 函数中变量的作用域
局部变量
"""
演示在函数使用的时候,定义的变量作用域
"""
# 演示局部变量
def test_a():
num = 100
print(f"num={num}")
test_a()
# 出了函数体局部变量就无法使用了,因为函数执行完函数内的局部变量就会被销毁
print(num)
全局变量
演示
# 演示全局变量
num = 200
def test_a():
print(f"test_a:{num}")
def test_b():
num = 500 # 在函数内部定义一个局部变量,这个变量虽然和全局变量num的名称相同但是他们是互不影响的
print(f"test_b:{num}")
test_a()
test_b()
print(num)
global关键字
演示
# global关键字,在函数内声明变量为全局变量
num = 100
def test_a():
print(f"test_a:{num}")
def test_b():
# global 关键字声明a是全局变量
global num
num = 200 # 在函数内部定义一个局部变量,这个变量虽然和全局变量num的名称相同但是他们是互不影响的
print(f"test_b:{num}")
test_a()
test_b()
print(f"全局变量num = {num}")
总结
练习-写一个ATN机
money = 5000000 # 银行卡余额
name = input("请输入用户姓名:")
def balance():
"""
balance 是查询银行卡余额的函数
:return:
"""
print(f"-----------------查询银行卡余额-----------------")
print(f"您的银行卡余额为:{money}")
def deposit(data):
"""
deposit 是存款函数
:param data: 形参data用来接收存款数值
:return:
"""
print(f"-----------------存款-----------------")
# 声明关键字money是全局变量
global money
money += data
print(f"成功存款{data}元")
balance() # 调用查询余额的函数
def withdraw_money(data):
"""
withdraw_money 是取款函数
:param data: 形参data用来接收取款数值
:return:
"""
print(f"-----------------取款-----------------")
print(f"成功取款{data}元")
# 声明关键字money是全局变量
global money
money -= data
balance() # 调用查询余额的函数
def menu():
"""
menu 是主菜单函数
:return: 返回操作的编号
"""
print(f"---------------{name},你好---------------")
print("查询余额【输入1】")
print("存款 【输入2】")
print("取款 【输入3】")
print("退出 【输入4】")
return input("请输入您要操作的编号:")
# 设置无限循环,确保程序不会退出 int() 把数据转换成整型
while True:
keyboard_input = menu() # 一进来就调用主菜单
if keyboard_input == "1":
balance() # 调用查询余额的函数
continue
elif keyboard_input == "2":
deposit(int(input("请输入你要存款的金额:")))
continue
elif keyboard_input == "3":
withdraw_money(int(input("请输入你要取款的金额:")))
continue
elif keyboard_input == "4":
print("退出成功")
break # 退出循环
else:
print("................输入错误")
menu()