函数:是组织好的,可以重复使用的,用来实现特定功能的代码段。
需求,不使用内置函数 len() 实现统计字符串的长度。
普通的方法
str1 = "hello world"
str2 = "hello world"
str3 = "hello world"
count = 0
for i in str1:
count += 1
print(f"字符串{str1}的长度为: {count}")
'''
运行结果为:
字符串hello world的长度为: 11
'''
str2 = "hello world"
count = 0
for i in str2:
count += 1
print(f"字符串{str2}的长度为: {count}")
'''
运行结果为:
字符串hello world的长度为: 11
'''
str3 = "hello world"
count = 0
for i in str3:
count += 1
print(f"字符串{str3}的长度为: {count}")
'''
运行结果为:
字符串hello world的长度为: 11
'''
上面的代码 实在是过于重复了,此时就得使用我们的函数来完成。
使用函数后的代码
str1 = "hello world"
str2 = "hello world"
str3 = "hello world"
# 自定义求字符串长度的函数
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)
mu_len()这个函数,使我们自己定义的,只能用于计算字符串长度。
def say_hi():
print("hello world")
say_hi()
函数一定需要先定义,在使用!(参数不用也可以不写)
返回值不需要也可以省略。
def hell():
print("hello world")
print("hello python")
hell()
*函数的参数:
* 传入参数的功能:在函数中进行计算的时候,接收外部(调用者)提供的数据
# 下面这个函数只能 1 + 2,想解决这个问题,只能使用参数传递了。
def add():
result = 1 + 2
print(f"1 + 2的结果是:{result}")
add()
def add(x, y):
result = x + y
print(f"{x} + {y} 的结果为:{result}")
add(1, 2) # 传递什么参数,就怎么计算结果(灵活)
注意事项:
1、函数参数之间使用分号进行分割
2、传参的时候,按照顺序传入数据,使用逗号分隔(多可以,少不行,多了的就不用) 3、 函数参数可以没有,也可以有nge
def demo(time, c):
print(f"时间证明:{time}, 体温为{c}")
if c > 38:
print("禁止进入")
else:
print("允许进入")
demo(72, 37.5)
1.4 函数的返回值(return)
定义格式
def 函数名(参数, .....):
函数体
return 返回值
变量 = 函数名(参数, .....)
return
,直接结束函数。后面不要写代码哦!def add(a,b):
result = a + b
return result # 将结果返回给函数调用者(他叫我帮他算数,等于多少我得告诉他啊!)
add(500, 20)
print(add)
None语句和 void一样(表示空的)
1、 用在if判断:
2、用于声明无内容的变量上
代码示例
返回值 None示例
def fi(age):
if age >= 18:
print(f"成年!适当娱乐")
return age
else:
return None
result = fi(17)
# 返回值为None(false)就执行
if not result:
print(f"未成年!不能沉迷游戏")
变量初始化为空:
num = None
说明函数功能
"""
函数说明文档
"""
# 通过多行注释,为函数进行说明
def add(x, y):
"""
add函数实现两数相加的功能,接受两个实参,具有返回值。
:param x:表示其中一个形参
:param y:表示其中一个形参
:return: 返回两数(两个形参)相加的结果
"""
result = x + y
print(f"2数相加的结果为{result}")
return result
add(1300, 14)
再函数里面嵌套定义或调用函数
def function1():
print("--------------1-------")
def function2():
print("--------------2-------")
function1()
print("--------------3-------")
function2()
执行流程:
1、先执行函数调用者,function2
2、打印2
3、执行function1
4、打印1
5、最后打印3
在Python中,变量的作用域指的是变量可被访问的范围。Python中有四种变量作用域:全局作用域、局部作用域(函数作用域)、嵌套作用域和内置作用域。
global
关键字声明为全局变量。python复制代码global_var = 10 # 全局变量
def func():
print(global_var) # 读取全局变量的值
func()
python复制代码def func():
local_var = 20 # 局部变量
print(local_var) # 在函数内部访问局部变量
func()
python复制代码def outer_func():
outer_var = 30 # 外部函数的变量
def inner_func():
print(outer_var) # 在内部函数访问外部函数的变量
inner_func()
outer_func()
print()
、len()
等,它们具有内置作用域,可以在程序的任何地方直接访问。需要注意的是,在嵌套作用域中,变量的查找顺序是从内到外,即先在局部作用域中查找变量,如果找不到再在上一级的嵌套作用域中查找。而在全局作用域中无法访问局部作用域和嵌套作用域中的变量。
x = 100
def num():
x = 200
print(x) # x = 200
num()
print(x) # x = 100
函数外部访问到的x是全局的,内部虽然修改了,但是局部,外部访问不到。
使用global后:
x = 100
# 使用global ,让函数内部的局部变量提升
def num():
global x
x = 200
print(x) # x = 200
num()
print(x) # x = 200
def main():
print("-" * 20 + "主菜单" + "-" * 20)
print("liujintao,你好,欢迎您来到Python ATM, 请选择操作:")
print("查询余额[输入1]")
print("存款 [输入2]")
print("取款 [输入3]")
print("退出 [输入4]")
sum = 0
# 余额模块
def querybalance (balance):
print("-" * 20 + "查询余额" + "-" * 20)
global sum
sum += balance
print(f"liujintao,您好,您的余额为:{ sum }")
return sum
# 存款模块
def fetch(cun):
print("-" * 20 + "存款" + "-" * 20)
# 存款
print(f"liujintao, 您好,您存款{cun}元成功!")
# 余额
querybalance(cun)
# 取款模块
def withdrawal(qumoney):
# 取款
print(f"liujintao, 您好,您取款{qumoney}元成功!")
# 余额
querybalance(-qumoney)
flag = True
while flag:
main()
num = int(input(("请输入您的选项:")))
if num == 1:
querybalance(sum)
elif num == 2:
money = int(input(("请输入您需要存款的金额:")))
fetch(money)
elif num == 3:
qumoney = int(input("请输入您的取款金额:"))
withdrawal(qumoney)
elif num == 4:
print("退卡成功!")
flag = False
else:
print("输入有误,重新输入!")