python基础(第四期):python 函数 学习一篇就够 && TAM功能实现

文章目录

  • python基础(第四期)
    • 一、函数
          • 1.1 体验函数
          • 1.2 简单 函数定义格式
          • 1.3 函数传参
          • 1.4 None语句
          • 1.5 函数说明文档
          • 1.6 函数的嵌套调用
          • 1.7 变量的作用域
          • 1.8 global关键字(变量提升)
          • 1.9 函数综合练习:

python基础(第四期)

一、函数

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

1.1 体验函数

需求,不使用内置函数 len() 实现统计字符串的长度。

普通的方法

str1 = "hello world"
str2 = "hello world"
str3 = "hello world"

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

'''
    运行结果为:
        字符串hello world的长度为: 11
'''

str2 = "hello world"

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

'''
    运行结果为:
        字符串hello world的长度为: 11
'''

str3 = "hello world"

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

'''
    运行结果为:
        字符串hello world的长度为: 11
'''

上面的代码 实在是过于重复了,此时就得使用我们的函数来完成。

使用函数后的代码

str1 = "hello world"
str2 = "hello world"
str3 = "hello world"
# 自定义求字符串长度的函数


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)

mu_len()这个函数,使我们自己定义的,只能用于计算字符串长度。

1.2 简单 函数定义格式
def say_hi():
    print("hello world")


say_hi()
  • 函数一定需要先定义,在使用!(参数不用也可以不写)

  • 返回值不需要也可以省略。

def hell():
    print("hello world")
    print("hello python")


hell()
1.3 函数传参

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

# 下面这个函数只能 1 + 2,想解决这个问题,只能使用参数传递了。
def add():
    result = 1 + 2
    print(f"1 + 2的结果是:{result}")


add()
  • 传参的写法
def add(x, y):
    result = x + y
    print(f"{x} + {y} 的结果为:{result}")


add(1, 2)  # 传递什么参数,就怎么计算结果(灵活)

注意事项:
1、函数参数之间使用分号进行分割
2、传参的时候,按照顺序传入数据,使用逗号分隔(多可以,少不行,多了的就不用)

​ 3、 函数参数可以没有,也可以有nge

  • 实参:调用时传入的实际参数
  • 形参:函数执行时接受的形式参数
  • 函数传参练习
def demo(time, c):
    print(f"时间证明:{time}, 体温为{c}")
    if c > 38:
        print("禁止进入")
    else:
        print("允许进入")


demo(72, 37.5)

1.4 函数的返回值(return)

  • 函数:返回值
    简单理解就是说;我给你东西(实参),得有回报吧(函数处理完的返回值)

定义格式

def 函数名(参数, .....:
    函数体
    return 返回值
    
变量 = 函数名(参数, .....
  • 函数中遇到 return,直接结束函数。后面不要写代码哦!
def add(a,b):
    result = a + b
    return result  # 将结果返回给函数调用者(他叫我帮他算数,等于多少我得告诉他啊!)


add(500, 20)
print(add)
  • 将结果返回给函数调用者(他叫我帮他算数,等于多少我得告诉他啊!)
1.4 None语句

None语句和 void一样(表示空的)

  • 他是一个特殊的字面量,用于表示空、无意义的。应用场景如下所示:

1、 用在if判断:

  • 在if判断的时候,None等同于 false
  • 一般用在函数中主动返回None,配合if语句做相关处理(return None),调用者收到None,就知道是假的。

2、用于声明无内容的变量上

  • 定义变量,但暂时不需要具体的值,可使用None代替

代码示例

返回值 None示例

def fi(age):
    if age >= 18:
        print(f"成年!适当娱乐")
        return age
    else:
        return None


result = fi(17)
# 返回值为None(false)就执行
if not result:
    print(f"未成年!不能沉迷游戏")

变量初始化为空:

num = None
1.5 函数说明文档

说明函数功能

  • 鼠标悬停函数,就会出现函数说明的文档哦!(注意:格式即可)
"""
    函数说明文档
"""

# 通过多行注释,为函数进行说明


def add(x, y):
    """
    add函数实现两数相加的功能,接受两个实参,具有返回值。
    :param x:表示其中一个形参
    :param y:表示其中一个形参
    :return: 返回两数(两个形参)相加的结果
    """
    result = x + y
    print(f"2数相加的结果为{result}")
    return result


add(1300, 14)
  • 写在三个引号里面的都属于函数的说明文档。(多写写养成习惯就好了)
1.6 函数的嵌套调用

再函数里面嵌套定义或调用函数

def function1():
    print("--------------1-------")


def function2():
    print("--------------2-------")
    function1()

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


function2()

执行流程:
1、先执行函数调用者,function2
2、打印2
3、执行function1
4、打印1
5、最后打印3

  • 特别注意,函数调用一定要等到函数执行完毕后,才会执行后面的语句。
1.7 变量的作用域

在Python中,变量的作用域指的是变量可被访问的范围。Python中有四种变量作用域:全局作用域、局部作用域(函数作用域)、嵌套作用域和内置作用域。

  1. 全局作用域(Global scope):在模块级别定义的变量具有全局作用域,可以在整个程序中的任何地方访问。全局变量可以在函数内部进行读取,但在函数内部无法直接修改其值,除非使用global关键字声明为全局变量。
  • 定义在函数的外面(实现函数的全局作用域)
python复制代码global_var = 10  # 全局变量

def func():
    print(global_var)  # 读取全局变量的值

func()
  1. 局部作用域(函数作用域):在函数内部定义的变量具有局部作用域,只能在函数内部访问。局部变量在函数执行完毕后会被销毁。
python复制代码def func():
    local_var = 20  # 局部变量
    print(local_var)  # 在函数内部访问局部变量

func()
  1. 嵌套作用域(Enclosing scope):当一个函数内部定义了另一个函数时,内部函数可以访问外部函数的变量,但外部函数不能访问内部函数的变量。
python复制代码def outer_func():
    outer_var = 30  # 外部函数的变量
    
    def inner_func():
        print(outer_var)  # 在内部函数访问外部函数的变量

    inner_func()

outer_func()
  1. 内置作用域(Built-in scope):Python中有一些内置的函数和变量,如print()len()等,它们具有内置作用域,可以在程序的任何地方直接访问。

需要注意的是,在嵌套作用域中,变量的查找顺序是从内到外,即先在局部作用域中查找变量,如果找不到再在上一级的嵌套作用域中查找。而在全局作用域中无法访问局部作用域和嵌套作用域中的变量。

1.8 global关键字(变量提升)
x = 100


def num():
    x = 200
    print(x) # x = 200


num()
print(x) # x = 100

函数外部访问到的x是全局的,内部虽然修改了,但是局部,外部访问不到。

使用global后:

x = 100

# 使用global ,让函数内部的局部变量提升
def num():
    global x
    x = 200
    print(x) # x = 200


num()
print(x) # x = 200
  • global提升变量作用域所以,最后面访问x的时候,访问就是函数内部的
1.9 函数综合练习:
def main():
    print("-" * 20 + "主菜单" + "-" * 20)
    print("liujintao,你好,欢迎您来到Python ATM, 请选择操作:")
    print("查询余额[输入1]")
    print("存款   [输入2]")
    print("取款   [输入3]")
    print("退出   [输入4]")


sum = 0
# 余额模块


def querybalance (balance):
    print("-" * 20 + "查询余额" + "-" * 20)
    global sum
    sum += balance
    print(f"liujintao,您好,您的余额为:{ sum }")
    return sum
# 存款模块


def fetch(cun):
    print("-" * 20 + "存款" + "-" * 20)
    # 存款
    print(f"liujintao, 您好,您存款{cun}元成功!")
    # 余额
    querybalance(cun)

# 取款模块


def withdrawal(qumoney):
    # 取款
    print(f"liujintao, 您好,您取款{qumoney}元成功!")
    # 余额
    querybalance(-qumoney)


flag = True

while flag:
    main()
    num = int(input(("请输入您的选项:")))
    if num == 1:
        querybalance(sum)
    elif num == 2:
        money = int(input(("请输入您需要存款的金额:")))
        fetch(money)
    elif num == 3:
        qumoney = int(input("请输入您的取款金额:"))
        withdrawal(qumoney)
    elif num == 4:
        print("退卡成功!")
        flag = False
    else:
        print("输入有误,重新输入!")

你可能感兴趣的:(Python,python,学习)