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 = 0for i in data:count += 1print(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 +zprint(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值,也就是Falseprint('未成年,禁止进入')'''
None用于声明无初始内容的变量
'''
name = None
4.1.5 函数的说明文档
'''
演示函数进行文档说明
'''#定义函数,进行文档说明def add(x,y):'''add函数可以接受两个参数,进行两数相加的功能:param x:形参x表示相加的其中一个数字:param y: 形参y表示相加的另一个数字:return: 返回值是两数相加的结果'''result = x + yprint(f'两数相加结果是:{result}')returnadd(5,6)
4.1.6 演示嵌套调用函数
'''
演示嵌套调用函数
'''#定义函数func_bdef func_b():print('----2-----')#定义函数func_a,并调用函数func_bdef func_a():print('----1-----')#嵌套调用函数func_bfunc_b()print('----3-----')#嵌套调用函数func_a
func_a()
4.1.7 演示在函数使用时,定义的变量作用域
'''
演示在函数使用时,定义的变量作用域
'''#演示局部变量def testA():#定义局部变量numnum = 100print(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 aaaaaa = 699999print(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 += numprint('--------存款--------')print(f'你好{name},你的存款{num}成功')query(False) #调用query函数查询存款#定义取款函数
def get_money(num):global money #将money在函数内部定义为全局变量money -= numprint('--------取款--------')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)continueelif keyboard_input == '2':num = int(input('你想要存多少,请输入:'))saving(num)continueelif keyboard_input == '3':num = int(input('你想要取多少,请输入:'))get_money(num)continueelse:print('退出')break
4.2 函数进阶
4.2.1 函数的多个返回值
'''
演示python多个返回值实例
'''#演示多个变量,接受多个返回值
def test():return 1,2,3x,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)