参考视频
函数的基础体验
# 函数:是组织好的,可重复使用的,用来实现特定功能的代码段
# 需求,统计字符串的长度,不使用内置函数len()
# 繁琐的方法
# str1 = 'itheima'
# str2 = 'itcast'
# str3 = 'python'
# count1 = 0
# for i in str1:
# count1 += 1
# print(f'字符串{str1}的长度是:{count1}')
#
# count2 = 0
# for i in str2:
# count2 += 1
# print(f'字符串{str2}的长度是:{count2}')
#
# count3 = 0
# for i in str3:
# count3 += 1
# print(f'字符串{str3}的长度是:{count3}')
# 可以使用函数,来优化这个过程
str1 = 'itheima'
str2 = 'itcast'
str3 = 'python'
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)
"""
字符串itheima的长度是7
字符串itcast的长度是6
字符串python的长度是6
"""
函数基础定义案例
# 定义函数
def check():
# 编写函数体输出信息
print('欢迎来到黑马程序员!\n请出示您的健康码以及72小时核酸证明!')
# 调用函数
check()
"""
欢迎来到黑马程序员!
请出示您的健康码以及72小时核酸证明!
"""
函数的基础定义语法
# 函数的定义
"""
def 函数名(传入参数):
函数体
return 返回值
"""
# 函数的调用
# 函数名(参数)
"""
函数使用步骤:
先定义函数
后调用函数
"""
"""
注意事项:
参数不需要,可以省略
返回值不需要,可以省略
"""
# 定义一个函数,输出相关信息
def say_hi():
print('hi 我是黑马程序员。')
# 调用函数,让定义函数开始工作
say_hi()
"""
hi 我是黑马程序员。
"""
"""
以下来源菜鸟教程
"""
# 你可以定义一个由自己想要功能的函数,以下是简单的规则:
# 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
# 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
# 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
# 函数内容以冒号 : 起始,并且缩进。
# return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
# return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。
# 不带参数值的 return 语句返回 None。之前的例子都没有示范如何返回数值,
# 以下实例演示了 return 语句的用法:
# 可写函数说明
def sum_t(arg1, arg2):
# 返回2个参数的和."
total_1 = arg1 + arg2
print("函数内 : ", total_1)
return total_1
# 调用sum函数
total_1 = sum_t(10, 20)
print("函数外 : ", total_1)
"""
函数内 : 30
函数外 : 30
"""
def sum_t(arg1, arg2):
# 返回2个参数的和."
total_2 = arg1 + arg2
print("函数内 : ", total_2)
# 调用sum函数
total_2 = sum_t(10, 20)
print("函数外 : ", total_2)
"""
函数内 : 30
函数外 : None
"""
# return返回值
# 在Python中,return 是用来结束函数执行并返回值的关键字。当函数执行到 return 语句时,函数会立即停止执行,
# 并将紧跟在 return 后面的值作为函数的结果返回给调用者。这个返回值可以被存储到一个变量中,或者在程序中进行其他操作。
# 例如,在下面这个简单的函数中,return 语句返回了参数 x 的平方值:
def square(x):
return x * x
result = square(5)
print(result) # 输出 25
# 在这个例子中,square 函数接受一个参数 x,计算 x 的平方值并返回,
# 然后在调用函数时,将返回值存储到 result 变量中,并打印出来。
函数的传入参数
# 基于函数的定义语法:
# def 函数名(传入参数)
# 函数体
# return返回值
# 可以有如下函数定义:
# def add(x,y):
# result= (x + y)
# print(f'{x} + {y}的结果是:{result}')
# 实现了,每次计算的是x+y,而非固定的1+2
# x+y的值,可以在调用函数的时候指定。
# 定义2数相加的函数,通过参数接收被计算的2个数字
def add(x, y):
# x和y是形式参数
result = x + y
print(f'{x} + {y}的计算结果是:{result}')
# 调用函数,传入被计算的2个数字
add(1, 2)
# 1和2是实际参数
# 函数的参数数量不限,使用都好分隔开
# 传入参数的时候,要和形式参数一一对应,都好隔开
def add(x, y, z):
# x和y是形式参数
result = x + y + z
print(f'{x} + {y} + {z}的计算结果是:{result}')
# 调用函数,传入被计算的2个数字
add(1, 2, 3)
函数的传入参数案例
# 定义函数
def check(temp):
# 编写函数体输出信息
print('欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!')
if temp <= 37.5:
print(f'体温测量中,您的体温是:{temp}度,体温正常请进!')
else:
print(f'体温测量中,您的体温是:{temp}度,需要隔离!')
# 调用函数,传入实际参数
check(37.3)
函数返回值的定义语法
# 定义一个函数,完成2数相加功能
"""
def 函数(参数。。。):
函数体
return 返回值
变量 = 函数(参数)
"""
def add(a, b):
result = a + b
# 通过返回值,将相加的结果返回给调用者
return result
# 返回结果后还想输出一句话(无输出),函数体在遇到return后就结束了,
# 所以写在return后的代码不会执行
print('我完成了')
# 在类或函数定义之后应该有两个空白行
# 函数的返回值,可以通过变量取接收
r = add(5, 6)
print(r)
函数返回值-None类型
"""
演示特殊字面量:None
类型是NoneType,用于表示空的无意义的
"""
# 无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)}')
# 用在if判断上,在if判断中,None等同于False
# 一般用于在函数中主动返回None,配合if判断做相关处理
# None用于if判断
def check_age(age):
if age > 18:
return 'SUCCESS'
else:
return None
result = check_age(16)
if not result:
# 进入if表示result是None值,也就是False
print('未成年,不可进入。')
# 由于在Python中, None 被视为假(False)的值,而其他非空的对象被视为真(True)的值,
# 你可以直接在 if 语句中使用 if not result,这样会更加简洁。因为如果 result
# 是 None,它将被视为假,触发 if 语句中的逻辑。
# 这样的代码会清晰地表达逻辑:如果 result 是 None,则说明未满 18 岁,进入相应的逻辑。
# None用于声明无初始内容的变量,定义变量,但暂时不需要变量有具体值,可以用None代替
name = None
"""
你好呀
无返回值函数,返回的内容是:None
无返回值函数,返回的内容类型是:<class 'NoneType'>
你好呀
无返回值函数,返回的内容是:None
无返回值函数,返回的内容类型是:<class 'NoneType'>
未成年,不可进入。
"""
函数的说明文档
# 定义函数,进行文档说明
def add(x, y):
"""
add函数可以接收2个参数,进行2数相加的功能
:param x:形参x表示相加的其中一个数字
:param y:形参y表示相加的另一个数字
:return:返回值是2数相加的结果
"""
result = x + y
print(f'2数相加的结果是:{result}')
return result
# 鼠标悬停能看到说明文档
add(5, 6)
函数的嵌套调用
"""
演示嵌套调用函数
在一个函数中,调用另外一个函数
函数A中执行到调用函数B的语句,会将函数B全部执行完成后,继续执行函数A的剩余内容
"""
# 定义数func_b
def func_b():
print('---2---')
# 定义函数func_a,并在内部调用func_b
def func_a():
print('---1---')
# 嵌套调用func_b
func_b()
print('---3---')
# 调用函数fun_a
func_a()
"""
结果
---1---
---2---
---3---
"""
变量(局部、全部)在函数中的作用域
"""
演示在函数使用的时候,定义的变量作用域
"""
# 演示局部变量,作用范围在函数内部,在函数外部无法使用
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)
"""
test_a:200
test_b:200
200
"""
# 在函数内修改全局变量
num = 200
def test_a():
print(f'test_a:{num}')
def test_b():
num = 500 # 局部变量
print(f'test_b:{num}')
test_a()
test_b()
print(num)
"""
test_a:200
test_b:500
200
"""
# global关键字,在函数内声明变量为全局变量
num = 200
def test_a():
print(f'test_a:{num}')
def test_b():
global num # 设置内部定义的变量为全局变量
num = 500 # 局部变量
print(f'test_b:{num}')
test_a()
test_b()
print(num)
"""
test_a:200
test_b:500
500
"""
函数综合案例
"""
定义一个全局变量:money,用来记录银行卡余额(默认5000000)
定义一个全局变量:name,用来记录客户姓名(启动程序时输入)
定义如下的函数:
*查询余额函数
*存款函数
*取款函数
*主菜单函数
要求:
程序启动后要求输入客户姓名
查询余额、存款、取款后都会返回主菜单
存款、取款后,都应显示一下当前余额
客户选择退出或输入错误,程序会退出,否则一直运行
"""
# 定义全局变量money name
money = 5000000
# 要求客户输入姓名
name = input('请输入您的姓名:')
# 定义查询函数
def query(show_header):
if show_header:
print('-----------查询余额------------')
print(f'{name},您好,您的余额剩余:{money}元。')
# 定义存款函数
def saving():
global money # 设置money在函数内部定义为全局变量
money += num
print('-----------存款------------')
print(f'{name},您好,您存款{num}元成功。')
# 调用query函数查询余额
query(False)
def get_money():
global money # 设置money在函数内部定义为全局变量
money -= num
print('-----------取款------------')
print(f'{name},您好,您取款{num}元成功。')
def main():
print('-----------主菜单------------')
print(f'{name},您好,欢迎来到黑马银行ATM,请选择操作:。')
print('查询余额\t[输入1]')
print('存款\t\t[输入2]')
print('取款\t\t[输入3]') # 通过\t制表符对齐输出(不够可加\t)
print('退出\t\t[输入4]')
return input('请输入您的选择:')
# 设置无限循环,确保程序不退出
while True:
keyboard_input = main()
if keyboard_input == '1':
query(True)
continue # 通过conti继续下一次循环,一进来就是回到了主菜单
elif keyboard_input == '2':
num = int(input('您想要存多少钱?请输入:'))
saving()
continue
elif keyboard_input == '3':
num = int(input('您想要取多少钱?请输入:'))
get_money()
continue
else:
print('程序退出')
break # 通过break退出
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 3415226167@qq.com