Python学习-day8(函数)

函数 

函数的初体验:

函数是组织好的,可重复使用的,用来使用实现特殊功能的代码段。

举例:len()函数计算字符串的长度,是python的内置函数。其他还有input,str等等。

案例学习:

python的print字符串前面加f表示格式化字符串,加f后可以在字符串里面使用用花括号括起来的变量和表达式,如果字符串里面没有表达式,那么前面加不加f输出应该都一样

自己写一个计算字符串长度功能:

str1="ithemia"
str2="itcast"
str3="python"
#定义一个计数变量
count=0
for i in str1:
    count+=1
print(count)
count=0
for j in str2:
    count+=1
print(count)
count=0
for k in str3:
    count+=1
print(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)

函数的定义:

语法结构:

def 函数名(参数):

        函数体

        return 返回值

调用函数:

函数名(参数)

案例学习:
def say_hi():
    print("hi 我是python程序员")
#调用函数,让定义的函数工作
say_hi()

先执行第4行,在执行第1行

注意事项:

参数不需要可以省略

返回值不需要可以省略

一定要先定义在使用

练习案例:
def he_suan():
    print("请出示健康码和48小时核酸证明")
he_suan()

函数的参数:

在函数计算时能够接受外部(调用时)提供的数据

案例学习:

定义两个相加的函数

def add(x,y):
    result=x+y
    print(f"x+y的结果为:{result}")
#调用函数,传入两个实参,按照顺序,逗号隔开
add(100,100)

当然也可以多个参数,也可以没有参数

#定义一个三数(形式参数)相加函数,通过参数接收被计算三个数字
def add(x,y,z):
    result=x+y+z
    print(f"x+y+z的结果为:{result}")
#调用函数,传入两个实参,按照顺序,逗号隔开
add(100,100,200)
注意事项:

1.编写函数时的参数为形式参数

2.调用函数时为实际

3.参数参数传入要一一对应

4.用逗号分隔开参数

练习案例:
def he_suan(temperature):
    if temperature>37.5:
        print(f"您的体温是:{temperature},需要隔离!")
    else:
        print(f"您的体温是:{temperature},体温正常请进!")
he_suan(37.6)

函数返回值:

函数返回值的定义语法:

返回值就是函数在完成事情后,返回给调用者的结果

案例学习:
def add(x,y):
    result=x+y
    return result
r=add(5,6)
print(r)
print("我完事了")
注意:

return 过后,函数就不会再去执行循环语句了。

返回值之None类型:

如果函数没有使用return语句其实是使用了特殊的字面量None,其类型是<class 'NoneType'>

就是返回空的意思

案例验证:

即可以不去返回,也可以直接返回None

def say_hi():
    print("hi")
result=say_hi()
print(f"无返回值函数返回内容是:{result}")
print(f"无返回值函数,返回内容的类型是:{type(result)}")

def say_hi1():
    print("hi")
    return None
result1=say_hi1()
print(f"无返回值函数1返回内容是:{result1}")
print(f"无返回值函数1,返回内容的类型是:{type(result1)}")

结果:

None的运用场景:

None表示空,没意义,具有很多的应用场景,用在函数无返回值上。

在if语句判断中None为False,一般和函数无返回值配合。

例如:

def check_age(age):
    if age>18:
        return "SUCCESS"
    else:
        return None
result2=check_age(16)
if not result2:
    #进入if证明result2是None值,也即是False
    print("未成年,不可进入")

用于变量的赋值上,有些变量不需要一些具体值(无初始值),用None来代替。

例如:

name=None

函数的说明文档:

函数是纯代码语言,人类分析效率低,可以添加说明文档辅助理解函数的作用。

通过多行注释的功能,写在函数体之前,对函数体进行解释说明

语法结构:

def func(x,y):

'''

函数说明

:param x:形参x的说明

:param y:形参y的说明

:return:返回值的说明

'''

函数体

return 返回值

示例:
def add(x,y):
    '''
    add函数可以接收两个参数,进行两个参数相加的功能
    :param x: 第一个形式变量
    :param y: 第二个形式变量
    :return: 返回的是两数相加的结果
    '''
    result=x+y
    print(f"2数相加的结果是:{result}")
    return result
add(5,6)#鼠标悬停,Ctrl+Q调出说明文档

函数的嵌套调用:

在一个函数里又调用了另一个函数

示例:
def func_b():
    print("---------2--------")
def func_a():
    print("---------1--------")
    #调用func_b
    func_b()
    print("---------3---------")
#调用func_a
func_a()

执行流程,函数a中会执行函数b,先将函数b执行完,在执行函数A剩下的代码。

函数中变量的作用域:

变量的作用范围就是哪里可用哪里不可用

分为全局变量和局部变量

局部变量:定义在函数体内部,作用域也在函数内部。

作用:作用于函数体内部,临时保存变量,函数结束时,自动销毁

示例:

def test_a():
    num=100
    print(num)

test_a()
#出了函数体,局部变量不能使用
#print(num)报错
全局变量:指在函数内外都能生效的变量。

作用:作用于多个函数或函数外部

示例:

num1=200
def test_b():
    print(f"test_b:{num1}")
def test_c():
    print(f"test_c:{num1}")
test_b()
test_b()
print(num1)
global关键字:

在函数内部修改全局变量的值

示例:

num1=200
def test_b():
    print(f"test_b:{num1}")#200
def test_c():
    num1=500
    print(f"test_c:{num1}")#500
test_b()
test_c()
print(num1)#200

如图所示num1在test_c函数里是500,最后输出又变回200了,这说明,在函数内部num1为一个局部变量,无法带到函数外。

如果一定要在函数内部改全局变量可以使用关键字global

示例:

num1=200
def test_b():
    print(f"test_b:{num1}")#200
def test_c():
    global num1
    num1=500
    print(f"test_c:{num1}")#500
test_b()
test_c()
print(num1)#500

综合案例:ATM

money=5000000
name=None
def ATM_find():
    print(f"{name}你的账户余额为:{money}")
    return None
def ATM_deposit():
    data_money = input("请输入您所需要的存款金额:")
    global money
    money+=int(data_money)
    print(f"取款{data_money}成功,余额为:{money}")
    return None
def ATM_take():
    data_money1=input("请输入您所需要的取款金额:")
    global  money
    money-=int(data_money1)
    print(f"存款{data_money1}成功,余额为:{money}")
    return None
name=input("请输入您的姓名:")
def main():
    print(f"-----------------主菜单-----------------")
    print(f"{name},您好,欢迎来到学python的ATM,请输入需要的操作:")
    print("查询余额\t【输入1】")
    print("存款\t\t【输入2】")
    print("取款\t\t【输入3】")
    print("退出\t\t【输入4】")
    return input("请输入您的选择:")
while True:
    keyboard_input=main()
    if keyboard_input=="1":
        ATM_find()
        continue
    elif keyboard_input=="2":
        ATM_deposit()
        continue
    elif keyboard_input=="3":
        ATM_take()
        continue
    else:
        print("退出成功")
        break

部分结果:


不积跬步无以至千里,不积小流无以成江海。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值