Python基础学习12

106 阅读4分钟


作者:福雨
链接:juejin.cn/post/706866… 来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录:

一.可变函数kwargs

二.函数返回值

三.全局变量和局部变量

四.可变与不可变类型

五.停车场系统

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

一.可变函数kwargs:

**kwargs: 调用时,可输入多个实参,实参的类型必须是关键字参数,然后会转换成key:value的形式封装到字典里面。

拆包时:调用时加一个是拆的元组,列表的包,加两个是拆的字典的包

例子:

def show_book(**kwargs):
    print(kwargs)  # 打印结果 -----> {}字典

# 调用
show_book(bookname='三体', number='两本')

# 打印结果 ----->  {'bookname': '三体', 'number': '两本'}

拆包例子:

# 拆包:
def show_book(**kwargs):
    print(kwargs)  # 打印结果 -----> {}字典
    
# 调用
book = {'bookname': '西游记', 'author': '吴承恩', 'number': '2'}
show_book(**book)



# 打印结果
{'bookname': '西游记', 'author': '吴承恩', 'number': '2'}

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

二.函数返回值

参数:外界向里面传值

返回值:里面内容向外界传送。因为一个函数体内的变量不能直接被除该函数体以外的其它代码使用, 所以在函数体中使用return,再用变量名=函数(参数),这种格式接受返回值

return 后面的值可以是一个值,也可以是多个值。若是多个值,最终会将它们打包成一个元组返回到外界

错误示例:

def get_sum(*args):
    he = 0
    for i in args:
        he += i


# 把he的值累加到x上面
x = 100
# x = x + he  直接加he,会报错。因为he在函数里面,所以无法引用到外面

例子:

def get_sum(*args):
    he = 0
    for i in args:
        he += i
        return he   # return这个关键字就会往外界返回值,但需要有容器把它接受

# 把he的值累加到x上面
a = get_sum(1, 2, 3)
x = 100
x = x + a
print(a)
106 --------> 打印结果

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

三.全局变量和局部变量:

全局和局部变量: 在函数体中优先查找局部变量,其次才是全局变量。

全局变量:
    这种变量,无论是再函数内,还是函数外吗,都能被使用。但是在函数内没有权限改变全局变量,除非使用关键字globalglobal只用于不可变类型,可变类型可以直接在函数内被改变。
局部变量:
    这种变量在不使用返回值关键字的情况下,只能被特定函数体使用

例子:

a = 100    # 全局变量


def b():
    a = 0     # 局部变量
    print(a)
b()  # 调用结果----> 0




def c():
    print(a)
c()  # 调用结果----> 100



def e():
    global a
    a -= 12
    print(a)
e() # 调用结果----> 88

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

四.可变与不可变:

这里的 变 指的是允不允许改变,变了会不会对变量地址有影响

不可变: 当该改变变量的值时,地址发生了改变。 类型: int, str, floot, bool, tuple

例子:

a = 1
print(id(a))  # 1736350957808 ------>打印结果
a = 2
print(id(a))  # 1736350957840 ------>打印结果

可变: 当值发生变化时,变量地址就没有发生改变。 类型:list, dict, set

例子:

list = [1, 2, 3, 4]
print(id(list))  # 2517730799616 ------>打印结果
list.append(5)
print(id(list))  # 2517730799616 ------>打印结果

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

五.停车场系统:

要求:


进入停车场记录进入时间,如果出去则记录出去时间,停车时间是:出去时间-进入时间
数据结果:
[{'车牌':[0,出去时间]},......]
15分钟 1块
一个小时4块
停车场变量 ----> 全局变量

程序:

import random


def enter():
    a = input('请输入您进入时的车牌号:')
    time = random.randint(0, 3000)
    return a, time


def go_out():
    b = input('请输入您离开时的车牌号:')
    return b


ku = []  # 存放车辆的车牌号
car = []  # 存放车辆的信息
flug = True
while flug:
    print('您已进入停车场')  # 开始输入车辆信息
    a, time = enter()
    for n in car:  # 开始存入车辆的车牌号
        i, j = n.values()
        ku.append(i)
    if a not in ku:  # 判断车牌号是否重复
        print('您已停车{}分钟'.format(time))
        e = {'车牌号': '', '停车时间': 0}
        e['车牌号'] = a
        e['停车时间'] = time
        car.append(e)  # 存入车辆信息
        c = input('是否要离开停车场(y/n):')
        if c == 'y':
            b = go_out()  # 输入离开车辆的车牌号
            for f in car:
                i, j = f.values()
                if b == i:  # 判断离开车辆的车牌号是否存在于系统之中
                    g = j
                    if g < 15:
                        print('您已停车{}分钟,应付停车费1元'.format(g))
                    else:
                        print('您已停车{}分钟,应付停车费{}元'.format(g, g / 15))
                    flug = False
                    break
                else:
                    print('未查询到该车牌号')
                    break
    else:
        print('车牌号已存在')
    h = input('是否查看停放车辆信息(y/n):')
    if h == 'y':
        print(car)