4.1 函数的快速开发体验
"""
演示,快速体验函数的开发和使用
"""
#需求,统计字符串的长度,不使用内置函数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'字符串{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}')
my_len(str1)
my_len(str2)
my_len(str3)
4.1.1演示函数的定义语法
'''
演示函数的定义语法
'''
#定义一个语法,输出相关信息
def say_hi():
print('HI 我是学习的人,学python的人')
#调用函数,让函数工作
say_hi()
'''
定义一个自动查核算的小函数
'''
def check():
print('欢迎来到延安大学!\n请出示你的健康吗及核酸证明!')
#调用函数,让函数工作
check()
4.1.2 演示函数使用参数
'''
演示函数使用参数
'''
#定义两数相加的函数。通过参数接受被计算的两个数字
def add(x,y,z):
result = x + y +z
print(f"{x}+{y}+{z}的计算结果是:{result}")
#调用函数
add(1,5,99)
'''
升级版定义一个自动查核算的小函数
'''
def cpu(wendu):
print('欢迎来到延安大学!请出示你的健康吗及核酸证明!,并测量体温')
if wendu > 37.5:
print(f'你的体温是{wendu},需要隔离')
else:
print(f'你的体温是{wendu},请进')
cpu(36.6)
4.1.3定义函数返回值的语法格式
'''
演示:定义函数返回值的语法格式
'''
#定义一个函数,完成2数相加功能
def add(x,y):
result = x+y
#通过返回值,将相加的结果的返回给调用者
return result
#函数的返回值可以通过变量接受
r = add(5,6)
print(r)
4.1.4 特殊字符: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(17)
if not result:
#进入if 表示result是None值,也就是False
print('未成年,禁止进入')
'''
None用于声明无初始内容的变量
'''
name = None
4.1.5 函数的说明文档
'''
演示函数进行文档说明
'''
#定义函数,进行文档说明
def add(x,y):
'''
add函数可以接受两个参数,进行两数相加的功能
:param x:形参x表示相加的其中一个数字
:param y: 形参y表示相加的另一个数字
:return: 返回值是两数相加的结果
'''
result = x + y
print(f'两数相加结果是:{result}')
return
add(5,6)
4.1.6 演示嵌套调用函数
'''
演示嵌套调用函数
'''
#定义函数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.7 演示在函数使用时,定义的变量作用域
'''
演示在函数使用时,定义的变量作用域
'''
#演示局部变量
def testA():
#定义局部变量num
num = 100
print(num)
testA()
# 出了函数体,局部变量无法使用
#print(num)
'''
演示全局变量
'''
#定义全局变量
num = 600
def testB():
print(f'testB:{num}')
def testC():
print(f'testC:{num}')
testB()
testC()
print(num)
'''
在函数体内修改全局变量
'''
#定义全局变量
num = 900
aaa = 1800
def testB_1():
# global 关键字声明a是全局变量
global aaa
aaa = 699999
print(f'testB_1:{aaa}')
def testC_1():
num = 666 #局部变量
print(f'testC_1:{num}')
testB_1()
testC_1()
print(num)
print(aaa)
4.1.8 函数的基础使用案例
'''
演示函数综合开发案例
'''
#定义全局变量moeny,name
money = 1
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(False) #调用query函数查询存款
#定义取款函数
def get_money(num):
global money #将money在函数内部定义为全局变量
money -= num
print('--------取款--------')
print(f'你好{name},你的取款{num}成功')
query(False) # 调用query函数查询存款
#定义主菜单函数
def main():
print("--------主菜单--------")
print(f'你好{name},欢迎来到黑马银行,请选择操作:')
print('查询余额\t[输入1]')
print('存款\t\t[输入2]')
print('取款\t\t[输入3]') #通过\t制表符对齐输出
print('退出\t\t[输入4]')
return input('请输入你的选择:')
#设置无限循环,确保程序不退出
while True:
keyboard_input = main()
if keyboard_input == '1':
query(True)
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
4.2 函数进阶
4.2.1 函数的多个返回值
'''
演示python多个返回值实例
'''
#演示多个变量,接受多个返回值
def test():
return 1,2,3
x,y,z = test()
print(x,y,z)
4.2.2 函数多种参数的使用方式
'''
演示多种传参的形式
'''
def user_info(name,age,gender):
print(f'姓名{name},年龄{age},性别{gender}')
#位置参数 - 默认使用形式
user_info('TMo',20,'男')
#关键字参数
user_info(name='TMo',age=20,gender='男')
user_info(age=20,name='TMo',gender='男')#可以不按照参数的定义顺序传参
user_info('TMo',age=20,gender='男')
#缺省参数
def user_info(name,age,gender = '男'): #默认参数位于最后
print(f'姓名{name},年龄{age},性别{gender}')
user_info('TMo',age=20)
user_info('Lili',age=10,gender='女')
#不定长 - 位置不定长, *号
#不定长的形式参数会作为元组存在,接受不定长数量的参数传入
def user_info(*args):
print(args,type(args))
user_info(1,2,3,4,'小米')
#不定长 - 关键字不定长 ,**号
def user_info(**kwargs):
print(kwargs,type(kwargs))
user_info(a=1,b=2)
4.2.3 函数作为参数传递
'''
演示函数作为参数传递
'''
# 定义一个函数,接受另一个函数作为传入参数
def test_func(compute):
result = compute(1, 2)
print(f'compute参数类型是:{type(compute)}')
print(f'计算结果是:{result}')
# 定义另一个函数,准备作为参数传递另一个函数
def compute(x, y):
return x + y
# 调用并传入函数
test_func(compute)
4.2.4 lambda匿名函数
'''
演示lambda匿名函数
'''
# 定义一个函数,接受另一个函数作为传入参数
def test_func(compute):
result = compute(1, 2)
print(f'compute参数类型是:{type(compute)}')
print(f'计算结果是:{result}')
# 通过lambda匿名函数形式,将匿名函数作为参数传入
#lambda函数只支持一行代码
test_func(lambda x, y: x + y)