【黑马python:函数】51-61

本节目录

  • 一、前言
  • 二、函数的基础定义语法
    • 1.定义形式
    • 2.练习案例:查核酸
  • 三、函数的传入参数
    • 1.语法解析
    • 2.案例升级:核酸
  • 四、函数的返回值
    • 1.语法格式
    • 2.返回值的None类型
  • 五、函数的说明文档
  • 六、函数的嵌套调用
  • 七、变量在函数中的作用域
    • 1.局部变量与全局变量
    • 2.global关键字
  • 八、函数综合案例:ATM

一、前言

让我们在PyCharm中完成一个案例需求:
不使用内置函数len(),完成字符串长度的计算。

示例如下:

# 统计字符串长度
str1 = "itheima"
str2 = "itcast"
str3 = "python"

# 定义一个计数变量
count = 0
for i in str1:
    count += 1
print(f"字符串{str1}的长度为{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)

1.函数是组织好的、可重复使用的、用来实现特定功能的代码段 。
2.使用函数的好处是:
将功能封装在函数内,可供随时随地重复利用;
提高代码的复用性,减少重复代码,提高开发效率。

二、函数的基础定义语法

1.定义形式

【黑马python:函数】51-61_第1张图片

注意事项
参数如不需要,可以省略(后续章节讲解)
返回值如不需要,可以省略(后续章节讲解)
函数必须先定义后使用

2.练习案例:查核酸

手写换行符: \n

# 案例:查核酸
def search_1():
    # \n手写换行符
    print("欢迎!\n请出示健康码与核酸证明!")

search_1()

三、函数的传入参数

【黑马python:函数】51-61_第2张图片

1.语法解析

函数的传入参数作用:在函数运行的时候,接受外部传入的数据

# 定义两个数相加的函数
def add(x, y):
    result = x + y
    print(f"{x} +{y} = {result}")

# 调用参数
add(3, 4)

函数定义中,提供的x和y,称之为:形式参数(形参),表示函数声明将要使用的2个参数。参数之间使用逗号进行分隔。
函数调用中,提供的3和4,称之为:实际参数(实参),表示函数执行时真正使用的参数值。传入的时候,按照顺序传入数据,使用逗号分隔。
传入参数的数量是不受限制的。可以不使用参数,也可以使用任意N个参数。

def add(x, y, z):
    result = x + y +z
    print(f"{x} + {y} + {z} = {result}")

# 调用参数
add(3, 4, 5)

2.案例升级:核酸

【黑马python:函数】51-61_第3张图片

代码如下(示例):

# 案例:核酸升级
def tem(x):
    if x <= 37.3:
        print(f"欢迎!请出示健康码及核酸证明,并配合测量体温!\n您的体温是:{x}度,请进!")
    else:
        print(f"欢迎!请出示健康码及核酸证明,并配合测量体温!\n您的体温是:{x}度,需要隔离!")

tem(36.5)

四、函数的返回值

1.语法格式

所谓“返回值”,就是程序中函数完成事情后,最后给调用者的结果。
【黑马python:函数】51-61_第4张图片

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

# 函数返回值的语法
def add(x, y):
    result = x + y
    # 通过返回值,将相加的结果返回给调用者
    return result
    # return 后的代码不会再执行
    print("done!")
# r是新定义的变量;函数的返回值,可以通过变量去接收
r = add(4, 6)
print(r)

2.返回值的None类型

如果函数没有使用return语句返回数据,那么函数有返回值吗?
实际上是:有的。
Python中有一个特殊的字面量:None,其类型是:
无返回值的函数,实际上就是返回了:None这个字面量。
None表示:空的、无实际意义的意思;
函数返回的None,就表示,这个函数没有返回什么有意义的内容。也就是返回了空的意思。

# 返回值的None类型
def say_hi():
    print("hello!")

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

# 主动返回None的函数
def say_hi2():
    print("hello!")
    return None
result = say_hi2()
print(f"无返回值函数,返回的内容是{result}")
print(f"无返回值函数,返回的内容类型是{type(result)}")

None=False,if not 即if not False(not True=False,not False=True)而if语句只在Ture时运行所属下列执行代码

# None 用于if判断
def check_age(age):
    if age >= 18:
        return "SUCCESS"
    else:
        return None

result = check_age(16)
#
if not result:
    print("未成年,禁止进入。")
# None用于声明无初始内容的变量
name = None

五、函数的说明文档

在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档
【黑马python:函数】51-61_第5张图片

# 定义函数进行文档说明
def add(x, y):
    """
    两数相加
    :param x: 数字1
    :param y:数字2
    :return:结果
    """
    result = x + y
    print(f"两数相加的结果是{result}.")
    return result

六、函数的嵌套调用

1.什么是嵌套调用
在一个函数中,调用另外一个函数。
2.执行流程
函数A中执行到调用函数B的语句,会将函数B全部执行完成后,再继续执行函数A的剩余内容。

# 函数的嵌套调用
def func_b():
    print("---2---")

def func_a():
    print("---1---")
    # 嵌套调用func_b
    func_b()
    print("---3---")

func_a()

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

1.局部变量与全局变量

变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用),主要分为两类:局部变量和全局变量。
所谓局部变量,是定义在函数内部的变量,即只在函数体内部生效。
所谓全局变量,指的是在函数内、外都能生效的变量。

# 演示局部变量
def test_a():
    num = 100
    print(num)

test_a()
# 演示全局变量
num = 200
def test_a():
    print(f"test_a: {num}")
def test_b():
    print(f"test_b: {num}")

test_a()
test_b()
print(num)

2.global关键字

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

# 演示global
num = 200
def test_a():
    print(f"test_a: {num}")
def test_b():
    global num # 将内部定义的变量设置为全局变量
    num = 500
    print(f"test_b: {num}")

test_a()
test_b()
print(num)

八、函数综合案例:ATM

【黑马python:函数】51-61_第6张图片

# 案例:ATM
money = 5000000
name = None

name = input("please enter your name:")

定义查询函数:

# 定义查询函数
def query(show_header):
    if show_header:
        print("------------查询余额--------------")
    print(f"{name},hello!您的余额为{money}元。")

定义存款函数:

# 定义存款函数
def saving(num):
    global money
    money += num
    print("------------存款--------------")
    print(f"{name},您好,您存款{num}元成功。")
    # 调用query函数查询余额
    """
    这个query()默认是TRUE,
    也就是要打印查询余额,如果输入FALSE,
    就是不打印查询余额的表头了。
    """
    query(False)

定义取款函数:

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

    query(False)

定义主菜单:

# 定义主菜单
def main():
    print("------------主菜单--------------")
    print(f"{name},您好,欢迎来到银行。请选择您需要的服务:")
    print("查询余额\t输入[1]")
    print("存款\t\t输入[2]")
    print("取款\t\t输入[3]")
    print("退出\t\t输入[4]")
    return input("请输入您的选择:")

这里main函数的作用就是输入1234中任意一个数值,return就是在后面调用main函数时,这个数值可以传递给调用函数的地方。就记住如果函数括号里有传入数的话,就要有return.

设置无限循环:(while的条件需要得到布尔类型,true表示继续循环,false表示结束循环;while true就表示无限循环)

# 设置无限循环,确保程序不退出
while True:
    keyboard_input = main()
    if keyboard_input == "1":
        query(True)
        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

你可能感兴趣的:(python)