Python学习笔记4

目录

Ch5  函数

一、函数定义

二、函数的参数

三、函数的返回值

四、函数说明文档

五、函数的嵌套使用

六、变量的作用域

七、综合案例


Ch5  函数

一、函数定义

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

# 需求,统计字符串的长度,不使用内置函数len()
str1 = "zhugegantie"
str2 = "yuexinguowang"

#定义一个计数的变量
count = 0
for i in str1:
    count += 1
print(f"字符串{str1}的长度是:{count}")

count = 0
for i in str2:
    count += 1
print(f"字符串{str2}的长度是:{count}")
可以使用函数来优化这个过程:
def my_len(data):
    count = 0
    for i in data:
        count += 1
    print(f"字符串{data}的长度是{count}")
my_len(str1)
my_len(str2)

函数的定义:

def 函数名(传入参数):
    函数体
    return 返回值

其中,参数如不需要可以省略,但是没有参数也要有个()。返回值如不需要,可以省略。函数必须先定义后使用。

函数的调用:

函数名(参数)

eg.

def lalala():
    print("欢迎来到欢乐谷\n请出示您的健康嘛及72小时核酸证明!")

lalala()

二、函数的参数

传入参数的功能是:在函数进行计算的时候,接受外部(调用时)提供的数据

eg.

def add(x,y):
    result = x +y
    print(f"{x}+{y}的结果是{result}")

add(1,4)

上例函数定义中,提供的x和y称之为:形式参数(形参),表示函数声明将要使用2个参数。

参数之间使用逗号分隔开。函数的调用中,提供的1和4称之为:实际参数(实参),表示函数执行时真正使用的参数值。传入时要按照顺序传入、逗号分隔。

eg.

def check(t):
    print(f"欢迎来到方特,请出示您的健康码,并配合测量体温")
    if t <= 37.5:
        print(f"您的体温是{t},体温正常,请进。")
    else:
        print(f"您的体温是{t},需要隔离。")

check(37.6)

三、函数的返回值

返回值:即程序中函数完成事情后,最后给调用者的结果。

使用关键词:return来返回结果。

!:函数体在遇到return后就结束了,所以写在return后的代码不会被执行。

Python中有一个特殊的字面量:None,其类型是<class 'NoneType>

无返回值的函数,实际上就是返回了:None这个字面量。

None用于函数无返回值上。也可以用于if判断上,在if判断中,None = False。还可用于声明无内容的变量上,定义变量但暂时不需要变量有具体值时可用None来代替。

四、函数说明文档

函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率较低。

我们可以给函数添加说明文档,辅助理解函数的作用。

语法如下:

def func(x,y):
    """
    函数说明
    :param x :形参x的说明
    :param y :形参y的说明
    :return  :返回值的说明
    """
    函数体
    return 返回值

在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档,如下所示

五、函数的嵌套使用

指一个函数里面又调用了另一个函数。

def func_b():
    print("2")

def func_a():
    print("1")

    func_b()

    print("3")

#调用函数func_a
func_a()

输出结果:

六、变量的作用域

变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)

主要分为两类:局部变量(定义在函数体内部的变量,即只在函数体内部生效。作用:临时保存数据,当函数调用完后立刻销毁局部变量。出了函数体就无法使用)和全局变量(在函数体内、外都能生效的变量)

global关键字:使用global关键字可以在函数内部声明变量为全局变量,如下所示

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

def testB():
    # global 关键字声明a是全局变量
    global num
    num = 200
    print(num)

testA()
testB()
print(num)

七、综合案例

ATM案例:

定义一个全局变量:money,记录银行卡余额(默认500000000)

定义一个全局变量:name,记录客户姓名(启动程序时输入)

定义如下函数:查询余额函数、存款函数、取款函数、主菜单函数

要求:1.程序启动后要求输入客户姓名 2.查询余额、存款、取款后都会返回主菜单 3.存取款后都显示一下当前余额 4.客户选择退出或输入错误,程序会退出,否正程序会一直运行。

#         ATM
money = 5000000
name = None
name = input("请输入您的姓名:")
# 定义查询函数
def query(show_header):
    if show_header:
        print("-------------------------------查询余额-------------------------")
    print(f"{name},您好,您的余额是{money}元")

# 定义存款函数
def saving(num):
    global money
    money += num
    print("--------------------存款---------------------")
    print(f"{name},您好,您存款{num}元成功")
    # 调用query函数
    query(False)

# 定义取款函数
def get_money(num):
    global money
    money -= num
    print("--------------------取款---------------------")
    print(f"{name},您好,您取款{num}元成功")
    # 调用query函数
    query(False)

# 主菜单
def main():
    print("---------------------主菜单----------------")
    print(f"{name},您好,欢迎来到诸葛集团银行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":
        query(True)
        continue    # 通过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  # 退出循环
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值