Py 函数

本文详细介绍了Python中的函数概念,包括基本语法、函数定义、参数传递、返回值、None类型、嵌套调用以及变量的作用域(局部和全局),并通过模拟ATM操作演示了如何运用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、函数的基本语法

函数的定义

函数调用

函数参数

函数的返回值

None类型

函数的嵌套调用

函数说明文档

二、变量的作用域

局部变量

全局变量

global 关键字

案例:模拟ATM


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

一、函数的基本语法

函数的定义

def 定义函数

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

在不需要传入参数时,传入参数可以不写,但是括号不能少;没有返回值时,返回值也可以不写。

函数调用

函数调用的格式:
    函数名(传入参数)

函数参数

以下是一个实现两个数相加的程序:

def add(x, y):
    return x + y


a = int(input())
b = int(input())
ret = add(a, b)
print(ret)

在这个函数中,x、y作为传入参数,中间用逗号间隔,在调用函数时,应根据函数定义时设定的传入参数格式按顺序输入。

程序中输入的a、b为实参(实际参数),表示执行函数时真正调用的参数,而函数中的x、y为形参(形式参数),用于声明函数将要使用两个参数。

函数的返回值

函数的返回值即为:当程序调用函数时,在有需要的时候向调用它的对象返回的数据,用 return 进行返回,返回的可以是一个具体的值,也可以是一个表达式。

None类型

None 表示没有、空,即return None和不写返回值效果是一样的

由上面两图可知,None 等价于无返回值

除了这种无意义的用法外,None 还可以用于以下情况:

1、在判断语句中,None 等价于 False,即为0

2、用于标记某处需要返回值,但返回值未设定的地方

函数的嵌套调用

在一个函数内调用另一个函数

直接写函数即可

当在函数b的函数体中调用函数a,则调用函数a时,会把a执行完毕后再继续b中剩下的流程

函数说明文档

我们可以以多行注释的方式给函数添加说明文档,用于说明函数的作用

def test()
    """
    说明文档
    """
    函数体

pycahrm会自动补齐格式,悬停在调用的函数上方会显示函数说明文档

二、变量的作用域

变量的作用域指变量的作用范围,即变量在哪些地方可用。在Python中,变量分为局部变量和全局变量 

局部变量

局部变量即定义在函数内部的变量,其作用域为所在函数内部。

注意,即使函数内部和函数外部有两个同名变量,但是函数内部的改变不影响外面的变量

eg:函数外部有num = 10,函数内部有num = 200,此时的200只在函数内部有效,函数外部还是10

num = 10
def test():
    num = 200
    print(num)

def print1():
    print(num)

test()
print1()

# 输出200 10

(而C语言不是这样)

#include<stdio.h>

int a = 0;
void test()
{
	a = 100;
}
int main()
{
	printf("%d\n", a);
	test();
	printf("%d", a);
}

//输出0  100

全局变量

全局变量即在函数内部、外部均生效的变量,一般定义在函数外部

global 关键字

使用 global关键字,可以在函数内部声明变量为全局变量,可用于创建全局变量或者在函数内部改变全局变量

eg:函数外部有num = 100,函数内部有num = 200,此时的200只在函数内部有效,当函数内部的num加了global后,两个num都变成200

注意:该关键字生效的前提时这个函数被调用,如果不被调用,则不生效,IDE会直接报错

num = 10
def test():
    global num
    num = 200
    # 注意这里用global修饰num和num的赋值需要分开写
    print(num)

def print1():
    print(num)

test()
print1()

# 输出200  200

案例:模拟ATM

"""
以下是一段利用自定义函数和循环简单模拟的ATM程序,要点如下:
1、设计一个开始菜单,用于显示进行各项操作的选项,供用户选择
2、利用自定义函数分别实现存款、取款、查询和退出功能
3、在完成一个操作后,回到主菜单,进行下一次操作的选择
"""
money = 50000
# 定义初始余额


def welcome():
    # 显示菜单
    print(f"please enter a number to chose what you want to do.")
    print("1.Deposit\t2.Withdraw money")
    print("3.Query\t\t0.Exit")
    # 1、存款 2、取款 3、查询 4、退出
    # 一个制表符不能对齐,可以用两个


def deposit():
    global money
    # 将局部变量转换为全局变量
    # 这里的全局变量声明要在使用这个变量之前
    print(f"Now,you have {money} dollars.")
    in1 = int(input("Enter a number:"))
    print(f"There are {money + in1} dollars in your card.")
    money += in1


def query():
    print(f"Now,you have {money} dollars.")


def withdraw_money():
    global money
    print(f"Now,you have {money} dollars.")
    out1 = int(input("Enter a number:"))
    if out1 <= money:
        # 判断余额是否充足
        print(f"You will get {out1} dollars and there are {money - out1} dollars in your card.")
        money -= out1
    else:
        print("Error")


name = input("Enter your name:")
# 输入用户姓名
print(f"Welcome {name}.")
welcome()
choose = int(input())
# 第一次选择

while choose:
    # 直接用chose作为判断依据,当chose为0时,退出循环
    if choose == 1:
        deposit()
        welcome()
        choose = int(input())
        # 在每一次操作后重新选择操作
    elif choose == 2:
        withdraw_money()
        welcome()
        choose = int(input())
    elif choose == 3:
        query()
        welcome()
        choose = int(input())
    else:
        print("Error")
        welcome()
        choose = int(input())

print("Exit")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值