【Python笔记】基础篇(五)

参考视频和资料:第一阶段-第五章-01-函数的初体验_哔哩哔哩_bilibili

Day05

对应视频:第一阶段第五章

第五章 函数

目录

第五章 函数

一、函数 

        1.定义

        2.优点

        3.语法

        4.执行顺序

二、函数的参数

        1.基本知识点

        2.自动查核酸小练习

三、函数的返回值

        1.定义

        2.语法

        3.补充

四、None类型

         1.定义

         2.应用场景

五、函数的说明文档

         1.方法

        2.格式规范

六、函数的嵌套调用

七、函数中变量的作用域

        1.局部变量

         2.全局变量

        3.global关键字

 八、ATM小练习


一、函数 

        1.定义

                组织好的,可重复利用的,用来实现特定功能的代码段。

                也就是将重复性的内容封装起来,供人使用
                之前接触的input()、str()、int()等都是Python的内置函数

        比如:要求输出三个字符串的长度,未使用函数时类似功能的语句要写三遍。若采用函数,当函数写好后就可以直接调用,减少了代码量

str1 = "itheima"
str2 = "itcast"
str3 = "Python"

sum = 0
for x in str1:
    sum += 1
print(f"字符串{str1}的长度是:{sum}")

sum = 0
for x in str2:
    sum += 1
print(f"字符串{str2}的长度是:{sum}")

sum = 0
for x in str3:
    sum += 1
print(f"字符串{str3}的长度是:{sum}")

         使用函数后:

str1 = "itheima"
str2 = "itcast"
str3 = "Python"

def length(data):
    sum = 0
    for x in data:
        sum += 1
    print(f"字符串{data}的长度是:{sum}")

length(str1)
length(str2)
length(str1)

 

 

        2.优点

                (1)将功能封装在函数内,可以随时随地重复使用
                (2)提高了程序的复用性,减少重复性代码,提高了开发效率

        3.语法

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

                函数的调用:
                        函数名(参数)

                补充:

                        (1)传入参数和返回值不是必须的,可以省略
                        (2)函数在定义后,只有被调用才回执行
        【注意】:函数必须先定义后再调用

def say():
    print("你好,Python!")

say()

 

 

        4.执行顺序

                 代码一般是从上往下执行的
                当扫描到函数定义的时候,并不会直接执行里面的函数体,只有再次扫描到该函数的调用的时候,会返回到函数的函数体中去执行

 

二、函数的参数

        1.基本知识点

                传入参数:在函数进行计算的时候,接受外部(调用时)提供的数据
                传入参数的数量不受限制
                        (1)不使用参数
                        (2)使用任意N个参数,使用逗号分隔开,并且注意传入参数时,要与形式参数一一对应

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

add(5,10)

 

        代码解析:
            (1)函数定义中提供的x和y,称为形式参数(形参),表示函数声明将要使用2个参数
                参数之间使用逗号分隔
            (2)函数调用中,提供的5和10,称为实际参数(实参),表示函数执行时真正使用的参数值
                传入的时候,按照顺序传入数据,使用逗号分隔

        2.自动查核酸小练习

def check(data):
    if data > 37.5:
        print(f"您的体温是:{data}度,需要隔离")
    else:
        print(f"您的体温是:{data}度,体温正常,请进!")

print("请出示您的健康码以及72小时核酸证明,并配合工作人员检查体温!\n体温测量中...")
num = float(input("请工作人员输入您的体温:"))
check(num)

 

 


三、函数的返回值

        1.定义

                函数在执行完成后,返回给调用者的结果

 

        2.语法

                def 函数(参数...)
                        函数体
                        return 返回值

                变量 = 函数(参数)
                也就是通过return关键字,就能向调用者返回数据,函数以外的变量就可以接收到函数的返回值

 

        3.补充

        函数体执行时,只要遇到return关键字,就表明函数已经执行完了——函数体中return以后的代码都不会被执行

        如下面的代码,相加之后的值通过return语句返回给调用处,并将返回值赋给了count

        return之后的print语句并不会被执行

def add(x,y):
    sum = x + y
    return sum
    print("Python")

count = add(5,10)
print(count)

 

四、None类型

         1.定义

                字面量None,类型:<class 'NoneType'>,表示“空”

                补充:
                        (1)如果函数没有使用return语句返回数据,函数仍有返回值
                        (2)无返回值的函数实际上就是返回了None这个字面量,即:这个函数没有返回什么有意义的内容。也就是返回了空

def say():
    print("你好!")

num = say()
print(f"函数say返回值的字面量是:{num}")
print(f"函数say返回值的类型是:{type(num)}")

 
        2.应用场景

                 (1)用在函数无返回值上
                        不使用return语句直接返回None
                        也可以主动return None

def say():
    print("你好!")
    return None

num = say()
print(f"函数say返回值的字面量是:{num}")
print(f"函数say返回值的类型是:{type(num)}")

 
                (2)用在if判断中
                        在if判断中,None等同于Flase
                        一般用于在函数中主动返回None,配合if判断做相关处理

def check(age):
    if age >= 18:
        return "SUCCESS"
    else:
        return None

result = check(15)
# 如果if后面跟的是字符串,则只要这个字符串不为空串,python就把它看作True
# if后面的条件是数字,只要这个数字不是0,python都会把它当做True处理
if not result:
    print("未成年不可以进入!")

 
                (3)用于声明无内容的变量上
                        定义变量,但是暂时不需要变量有具体值,可以用None来代替

name = None

        小提示:

                (1)如果if后面跟的是字符串,则只要这个字符串不为空串,python就把它看作True
                (2)if后面的条件是数字,只要这个数字不是0,python都会把它当做True处理

 

五、函数的说明文档

         添加说明文档可以帮助快速理解函数的作用

         1.方法

                多行注释
                注释内容应该写在函数体之前


        2.格式规范

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


                :param用于解释参数
                :return用于解释返回值

def add(x,y):
    """
    add函数可以接收两个参数,进行两个参数相加的功能
    :param x:形参x是相加的其中一个值
    :param y:形参y是相加的另外一个值
    :return:返回值是2数相加的结果
    """
    result = x + y
    print(f"{x}+{y}的结果是:{result}")
    return result

add(5,10)

                小技巧:
                        (1)在pycharm的函数内直接输入"""+回车就会出来
                        (2)如果没有,可以如果回车没用请进入设置:工具——Python集成工具》Docstring格式 原先的Plain格式改为reStructuredText即可
                        (3)当调用所定义好的函数时,将鼠标悬停在调用语句上可以查看写好的说明文档

 

六、函数的嵌套调用

        一个函数里面又调用了另外一个函数
        如果函数A中调用了另外一个函数B,那么当顺序执行到函数B时,会先把函数B中的任务都执行完之后才会回到上次函数A执行的位置

def fun2():
    print("---2---")

def fun1():
    print("---1---")
    #嵌套调用函数fun2
    fun2()
    print("---3---")

fun1()

 

 

 

七、函数中变量的作用域

         变量的作用域指的是变量的作用范围。即:变量在哪可用,在哪不可用


        1.局部变量

                (1)定义:定义在函数体内部的变量,只在函数体内部生效
                (2)特点:在函数体内部,临时保存数据。

                        即:当函数调用执行完成之后,会销毁局部变量
                        一旦出了函数体,局部变量就无法使用了

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

test()
# 下面这句会报错,显示:未解析的引用 'num'
# 原因:调用test函数执行完毕之后,内部的局部变量会被销毁,也就找不到num变量了
# print(num)

 

 
        2.全局变量

                 在函数体内、外都能生效的变量
                当已经存在全局变量了,如果再在某个函数体内定义一个与全局变量同名的变量,对其进行赋值是不会影响全局变量的,因为此时赋值的变量是局部变量。而当在该函数中用到该变量的时候,以局部变量为准

# 全局变量演示
num = 100

def test1():
    print(f"test1:{num}")

def test2():
    print(f"test2:{num}")

test1()
test2()
print(num)

 

        由于num是全局变量,在函数体内外都会生效,所以三个地方都输出的是100 

        全局变量与局部变量 :

num = 100

def test1():
    print(f"test1:{num}")

def test2():
    # 该num变成了局部变量
    num = 200
    print(f"test2:{num}")

test1()
test2()
print(num)

 

        由于test2中的num是局部变量,只对test2起作用,并且改变的num字面量是局部变量的,对外部全局变量的num不起作用,所以只有通过函数test2输出的值是200    


        3.global关键字

             可以将函数体内定义的变量声明为全局变量
            相当于在某个函数体内部声明与全局变量同名的变量时,如果加上global关键字,就将它与全局变量关联起来了(相当于同一个变量),可以进行修改

num = 100

def test1():
    print(f"test1:{num}")

def test2():
    # 将该num设置为了全局变量
    global num
    num = 200
    print(f"test2:{num}")

test1()
test2()
print(num)

 

         由于test2中的num用关键字global声明了,与函数外部的全局变量num联系起来了,所以改变test2中num的值也相当于修改了全局变量num的值。即后两个输出的都是200    

 

 八、ATM小练习

# 定义全局变量
money = 5000000
name = None
num = None

# 定义查询余额函数
def check(show_header):
    if show_header:
        print("-----------查询余额-----------")
    print(f"{name}您好,你的账户余额为:{money}元")

# 定义存款函数
def putin():
    global money
    print("-----------存款-----------")
    num = int(input("请输入您的存款金额:"))
    money += num
    print(f"{name}您好,您存款{num}元成功!")
    check(False)

# 定义取款函数
def putout():
    global money
    print("-----------取款-----------")
    num = int(input("请输入您的取款金额:"))
    money -= num
    print(f"{name}您好,您取款{num}元成功!")
    check(False)

# 定义主菜单函数
def menu():
        print("-----------主菜单-----------")
        print(f"{name}您好,欢迎来到XXX银行ATM,请选择操作:")
        print("查询余额\t【输入1】")
        print("存款\t\t【输入2】")
        print("取款\t\t【输入3】")
        print("退出\t\t【输入4】")
        global num
        num = int(input("请输入您的选择:"))


name = input("请输入您的名字:")
menu()
flag = True
while flag:
    if num == 1:
        check(True)
        menu()
    elif num == 2:
        putin()
        menu()
    elif num == 3:
        putout()
        menu()
    else:
        flag = False
        # 或者循环条件直接设置为True,这里直接用break

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值