PY函数2

一、变量

1)局部变量

**解释:**在函数内部定义变量名称

def test():
    a = 10
    print(a)
#调用函数
test()

打印结果
在这里插入图片描述
**注:**1. 局部变量只能用于当前的这个函数。
2.在一个文件里可以定义多个同名的局部变量,并且不受影响
用处:可以用来临时储存数据

2)全局变量

**解释:**在函数声明的变量,能够在定义的所有函数里使用。并且全局变量要在所有函数的最上方。(写函数之前先把全局变量给定义了)

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

1.全局变量和局部变量名字一样时

a = 200
def test():
    a = 100
    print(a)
    a = 300
    print(a)
#调用函数
test()

打印结果
在这里插入图片描述
**注:**当全局变量和局部变量名字一样时,函数会使用内部的局部变量。
局部找–>全局找–>报错

2.修改全局变量

方法: global+需要修改变量名
**不可修改的变量类型:**数字、元祖、字符串

x = 10
def test():
    # x = 100
    # print(x)
    global x
    x = 1010
    print(x)
  
#调用函数
test()
print(x)

打印结果
在这里插入图片描述
可以看到此时调用函数和直接打印x都变成了1010,证明在函数内部我们成功修改了全局变量。
list、字典、集合会在定义函数打印后改变。参考

li2 = [1,2]
def test2(a):
    a += a
    print(a)
#调用函数
test2(li2)
print(li2)

打印结果
在这里插入图片描述

3.使用函数外层变量

nonlocal:使用函数的外层变量

def test():
    num = 2
    def test2():
        nonlocal num
        num *= 2
        print(num)
    return test2()
#调用函数
test()

二、装饰器

定义: 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。

设计一个简单银行系统

def bank(accountID,name,money=0):
    print()

    def seeMoney():
        print("操作成功,剩余余额:", money)

    def putMoney(number):
        nonlocal money
        if isinstance(number, (int, float)) == True:
            if number >= 0:
                money = money + number
            else:
                print("存款金额不能为负数!")
        else:
            print("存款金额应该为数字类型!")
        seeMoney()

    def getMoney(number):#取款函数
        nonlocal money
        if isinstance(number,(int,float))==True:
            if number>=0 and number<=money:
                money=money-number
            else:
                print("余额不足!")
        else:
            print("取款金额应该为数字类型!")
        seeMoney()

    def menu():#定义菜单项
        while True:
            try:
                opNum = int(input("1.存钱 2.取钱 3.查询余额 4.退出\n选择你要办理的业务:"))
                if opNum == 1:
                    number = int(input("请输入存款金额:"))
                    putMoney(number)
                elif opNum==2:
                    number=int(input("请输入取款金额:"))
                    getMoney(number)
                elif opNum==3:
                    seeMoney()
                elif opNum==4:
                    print("退卡成功!\n")
                    break
                else:
                    print("请输入有效操作!")
            except:
                print("请输入有效操作!")
    return menu

users=[]#保存银行的所有储户
users.append(bank(1001,"张三"))


#使用索引调用函数
users[0]()

试用一下
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值