Python初学者学习记录——python函数

一、函数的初体验

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

                例如:python内置函数len(),用于求字符串的长度。

# 需求:统计字符串的长度,不使用内置函数len()
str1 = "itheima"
str2 = "itcast"
str3 = "python"

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

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

count = 0
for i in str2:
    count += 1
print(f"字符串{str3}的长度是:{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)

 Python初学者学习记录——python函数_第1张图片

        2、为什么要使用函数:为了得到一个针对特定需求、可供重复利用的代码段,提高程序的复用性,减少重复性代码,提高开发效率。

二、函数的基础定义语法

        1、函数的定义:

              def 函数名(传入参数):

                    函数体

                    return 返回值

        2、函数的调用:

              函数名(参数):

        3、注意事项:

              ①参数如不需要,可以省略

              ②返回值如不需要,可以省略

              ③函数必须先定义后使用

# 定义一个函数,输出相关信息
def say_hi():
    print("Hi 我是黑马程序员,学Python来黑马!")

# 调用函数,让定义的函数开始工作
say_hi()

 Python初学者学习记录——python函数_第2张图片

三、函数基础定义练习案例

        定义一个函数,函数名任意,要求调用函数后可以输出以下欢迎语:

        ·欢迎来到黑马动物园!

        ·请出示您的票码以及身份证或学生证!

# 自动查票

# 定义函数
def auto_check():
    print("欢迎来到黑马动物园!\n请出示您的票码以及身份证或学生证!")

# 调用函数
auto_check()

 Python初学者学习记录——python函数_第3张图片

四、函数的传入参数

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

              语法解析:

              Python初学者学习记录——python函数_第4张图片

              · 函数定义中,提供的a和b,称之为:形式参数(形参),表示函数声明将要使用2个参数

                      · 参数之间使用逗号进行分隔

              · 函数调用中,提供的5和6(15和55),称之为:实际参数(实参),表示函数执行时真正使用的参数值

                      · 传入的时候,按照顺序传入数据,使用逗号进行分隔 

        2、函数传入参数的数量是不受限制的。

                · 可以不使用参数

                · 也可以使用任意N个参数

五、函数的参数练习案例

        定义一个函数,名称任意,并接受一个参数传入(数字类型,表示体温)

        在函数内进行体温判断(正常范围:小于等于37.5度),并输入如下内容:

        1、· 欢迎来到黑马动物园!请出示您的票码以及身份证或者学生证,并配合测量体温!

              · 体温测量中,您的体温是:37.3度,体温正常请进!

        2、· 欢迎来到黑马动物园!请出示您的票码以及身份证或者学生证,并配合测量体温!

              · 体温测量中,您的体温是:39.3度,体温过高,不适合游玩!

# 升级版自动查票

# 定义函数
def auto_check(tem):
    print("欢迎来到黑马动物园!请出示您的票码以及身份证或者学生证,并配合测量体温!")
    if tem > 37.5:
        print(f"体温测量中,您的体温是:{tem}度,体温过高,不适合游玩!")
    else:
        print(f"体温测量中,您的体温是:{tem}度,体温正常请进!")

# 调用函数
auto_check(37.3)
auto_check(39.3)

 Python初学者学习记录——python函数_第5张图片

六、函数的返回值定义语法

        1、语法定义:

              def 函数(参数):

                    函数体

                    return 返回值

              变量 = 函数(参数)

        2、使用关键字:return来返回结果

        3、注意:函数体在遇到return后就结束了,所以写在return后的代码是不会执行的

# 函数返回值

# 定义函数,完成两数相加
def add(a, b):
    result = a+ b
    return result

# 调用函数,函数返回值可以通过变量来接收
r = add(5, 10)
print(r)

 Python初学者学习记录——python函数_第6张图片

七、函数返回值之None类型

        1、Python中有一个特殊的字面量:None,其类型是:,没有返回值的函数,实际上就是返回了:None这个字面量

              None表示:空的、无实际意义的意思。函数返回的None,就表示,这个函数没有返回什么有意义的内容,也就是返回了空的意思。

# 演示None

# 无return语句的函数
def say_hello():
    print("Hello!")

result = say_hello()
print(result)
print(type(result))

print() # 空一行

# 有return语句的函数,None也可以主动使用return返回,效果等同于不写return语句
def say2_hello():
    print("Hello!")
    return None

result = say2_hello()
print(result)
print(type(result))

 Python初学者学习记录——python函数_第7张图片

        2、None类型的应用场景

              None作为一个特殊的字面量,用于表示:空、无意义、其有非常多的应用场景:

              ①用在无返回值上

              ②用在if判断上

                    · 在if判断中,None等同于False

                    · 一般用于在函数中主动返回None,配合if判断做相关处理

# 用在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初学者学习记录——python函数_第8张图片

              ③用于声明无内容的变量上

                    · 定义变量,但暂时不需要变量有具体值,可以用None来代替

# None用于声明无初始内容的变量
name = None

八、函数的说明文档

        作用:函数进行说明解释,帮助更好的理解函数的功能

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

        Python初学者学习记录——python函数_第9张图片

九、函数的嵌套调用

        1、函数的嵌套调用:一个函数里面又调用了另外一个函数

        2、如果函数A中,调用了另外一个函数B,那么先把B中的任务都执行完毕后才会回到上次函数A执行的位置

# 演示嵌套调用函数

# 定义函数func_b
def func_b():
    print("---2---")

# 定义函数func_a
def func_a():
    print("---1---")

    # 嵌套调用func_b
    func_b()

    print("---3---")

# 调用函数func_a
func_a()

 Python初学者学习记录——python函数_第10张图片

十、变量在函数中的作用域

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

        主要分为两类:局部变量和全局变量

        1、局部变量:定义在函数体内部的变量,即只在函数体内部生效

              局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量

        Python初学者学习记录——python函数_第11张图片

        2、全局变量:在函数体内、外部能生效的变量

              思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办?

              答:将这个数据存储在一个全局变量中

        Python初学者学习记录——python函数_第12张图片

        3、global关键字:使用global关键字,可以在函数内部声明变量为全局变量

# 演示全局变量和局部变量
num = 100

def testA():
    print(num)

def testB():
    num = 200
    print(num)

testA()
testB()
print(num)

print() # 空行隔开
# global关键字

num = 100

def testA():
    print(num)

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

testA()
testB()
print(f"全局变量num = {num}")

 Python初学者学习记录——python函数_第13张图片

十一、函数综合案例

        Python初学者学习记录——python函数_第14张图片

        Python初学者学习记录——python函数_第15张图片

# 综合案例————黑马ATM

# 定义全局变量
money = 5000000

# 要求客户输入姓名
name = input("请输入您的姓名:")

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

# 定义查询余额函数
def surplus_money():
    print("--------查询余额--------")
    print(f"{name},您好,您的余额剩余:{money}元")
    print()

# 定义存款函数
def deposit_money():
    print("--------存款--------")
    incre_money = int(input("请输入您要存钱的数额:"))
    global money
    money += incre_money
    print(f"{name},您好,您存款{incre_money}元成功,余额剩余:{money}元")
    print()

# 定义取款函数
def withdrawal_money():
    print("--------取款--------")
    decre_money = int(input("请输入您要取钱的数额:"))
    global money
    temp_money = money - decre_money # 局部变量,用于判断取款后的余额数据是否合法
    if temp_money > 0:
        money -= decre_money
        print(f"{name},您好,您取款{decre_money}元成功,余额剩余:{money}元")
    else:
        print("余额不足啦,请重新在菜单选择")
    print()

# 调用函数,执行操作
while True:
    keyboard_num = main_menu()
    if keyboard_num == 1:
        surplus_money()
        continue
    elif keyboard_num == 2:
        deposit_money()
        continue
    elif keyboard_num == 3:
        withdrawal_money()
        continue
    else:
        print("程序结束啦")
        break


# 运行结果如下:
"""
请输入您的姓名:小明
--------主菜单--------
小明,您好,欢迎来到黑马银行ATM,请选择操作:
查询余额	[输入1]
存款		[输入2]
取款		[输入3]
退出		[输入4]
请输入您的选择:1
--------查询余额--------
小明,您好,您的余额剩余:5000000元

--------主菜单--------
小明,您好,欢迎来到黑马银行ATM,请选择操作:
查询余额	[输入1]
存款		[输入2]
取款		[输入3]
退出		[输入4]
请输入您的选择:2
--------存款--------
请输入您要存钱的数额:2000000
小明,您好,您存款2000000元成功,余额剩余:7000000元

--------主菜单--------
小明,您好,欢迎来到黑马银行ATM,请选择操作:
查询余额	[输入1]
存款		[输入2]
取款		[输入3]
退出		[输入4]
请输入您的选择:3
--------取款--------
请输入您要取钱的数额:8000000
余额不足啦,请重新在菜单选择

--------主菜单--------
小明,您好,欢迎来到黑马银行ATM,请选择操作:
查询余额	[输入1]
存款		[输入2]
取款		[输入3]
退出		[输入4]
请输入您的选择:3
--------取款--------
请输入您要取钱的数额:5000000
小明,您好,您取款5000000元成功,余额剩余:2000000元

--------主菜单--------
小明,您好,欢迎来到黑马银行ATM,请选择操作:
查询余额	[输入1]
存款		[输入2]
取款		[输入3]
退出		[输入4]
请输入您的选择:4
程序结束啦

Process finished with exit code 0
"""

 

你可能感兴趣的:(学习,python,开发语言)