Python学习日记-第十一天-名片系统的完善以及变量的进阶

这篇博客详细记录了作者完善Python名片系统的过程,包括增加用户操作分支和优化修改功能。同时,深入探讨了Python中变量的引用、可变与不可变类型以及局部和全局变量的概念,并通过实例进行了讲解。
摘要由CSDN通过智能技术生成


前言

继续完善名片系统


                                   名片系统的完善

一、增加分支,判断用户操作类型

1.1  显示添加 对名片的操作分为 1.修改 2.删除  0.返回上一级菜单

操作:

(注:这个函数是封装给上一个函数用的,原因是平时我们在开一程序中,如果一个函数的代码过多,会导致我们看的比较麻烦,所以可以通过封装多个函数来使用) 

代码:

def deal_card(find_dict):

    print(find_dict)

    action_str = input("请选择要执行的操作 1 修改 2删除 0返回上级菜单")

    if action_str == "1":

        print("修改名片")
    elif action_str == "2":

        print("删除名片")

操作结果:

 

 

 

1.2  进一步对1. 添加  2. 修改  进行处理 

下面是 修改名片的操作:

 代码:

def deal_card(find_dict):

    print(find_dict)

    action_str = input("请选择要执行的操作 1 修改 2删除 0返回上级菜单")

    if action_str == "1":

        find_dict["name"] = input("姓名:")
        find_dict["phone"] = input("电话:")
        find_dict["qq"] = input("QQ:")
        find_dict["email"] = input("邮箱:")

        print("修改名片")

操作结果:

 

 

 

 

 

显示已经修改成功! 

接下来是 删除名片的操作:

 代码:

def deal_card(find_dict):

    print(find_dict)

    action_str = input("请选择要执行的操作 1 修改 2删除 0返回上级菜单")

    if action_str == "1":

        find_dict["name"] = input("姓名:")
        find_dict["phone"] = input("电话:")
        find_dict["qq"] = input("QQ:")
        find_dict["email"] = input("邮箱:")

        print("修改名片")
    elif action_str == "2":

        card_list.remove(find_dict)

        print("删除名片成功!")

操作结果:

 

 

下面要做一下对 名片修改 的优化,之前做出来的,姓名,电话,等这些信息都要输一遍,才能都修改成功,所以用的时候就会很不方便

下面重新定义一个函数来解决这个问题:

定义新函数思路:

  1. 提示用户输入内容
  2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
  3. 如果用户没有输入内容,则返回“字典中原有的值”

注:下面新定义的函数 input_card_info 使用来替换上面 input 的  所以要把之前的代码修改一下!

 要改成变量

下面是新定义的函数:

 代码:

def input_card_info(dict_value, tip_message):

    # 1.提示用户输入内容
    result_str = input(tip_message)

    # 2.针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:

        return result_str
    # 3.如果用户没有输入内容,则返回“字典中原有的值”
    else:

        return dict_value

下面是运行结果:

 

 (注: 不需要修改的信息,按回车 可以直接跳过)

名片制作系统就已经完善了! 

 

                                      变量的进阶

目标

·变量的引用

·可变和不可变的类型

·局部变量和全局变量

一、变量的引用

  ·变量和数据都是保存在内存中的

  ·在Python中 函数的 参数传递 以及 返回值 都是靠 引用 传递的

引用的概念:

在Python 中

·变量 和 数据 是分开存储的

·数据 保存在内存中的一个位置

·变量 中保存着数据在内存中的地址

·变量 中 记录数据的地址 就叫做 引用
·使用 id() 函数可以查看变量中保存数据所在的内存地址

(注:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用)

   · 变量 不再 对之前的数据引用

   · 变量 改为 对新赋值的数据引用

(注:  = 右边的数据,才是我们程序中要处理的数据) 

下面用pycharm 做一个调用函数传递实参的引用测试:

代码: 

def test(num):

    print("在函数内部 %d 对应的内存地址是 %d" %(num, id(num)))

# 1.定义一个变量
a = 10

# 数据的地址本质就是一个数字,做一用%d
print("a 变量保存数据的内存地址是 %d" % id(a))

# 调用test函数

test(a)

下面是函数返回值传递引用的练习:

 输出结果:

 

二、可变和不可变类型

·不可变类型,内存中的数据不允许被修改

  • 数字类型 int, bool,float, complex,long(2.x)
  • 字符串 str
  • 元组 tuple

·可变类型,内存中的数据可以被修改:

  • 列表 list
  • 字典 dict

(注:字典的key 只能是有不可变类型的数据。 可变类型的数据变化是通过 方法 来实现的。)

三、局部变量和全局变量

· 局部变量 是在 函数内部定义的变量,只能在行数内部使用

·全局变量 是在 函数外部定义的变量(没有定义在某一个函数内),所有函数 内部 都是可以使用这个变量的

3.1局部变量 是在 函数内部 定义的变量,只能在函数内部使用

·函数执行结束后,函数内部的局部变量,会不系统回收

·不同的函数,可以定义相同的名字的局部变量,但是各用各的不会产生影响

局部变量的作用

·在函数内部使用,临时 保存 函数内部需要使用的数据

局部变量的生命周期

·所谓的生命周期 就是变量从被创建到被系统收回的过程

·局部变量 在 函数执行时才会被创建

·函数执行结束后 局部变量 被系统回收

·局部变量在生命周期内,可以用来存储 函数内部临时使用到的数据

3.2全局变量

· 全局变量 是在 函数外部定义 的变量,所有的函数内部都可以使用这个变量

(注:函数执行时,需要处理变量是会 首先查找 函数内部 是否存在指定名称的局部变量,如果没有,才会查找函数外部,如果两边都没有,程序会报错)

 输出结果:

如果在函数中需要修改全局变量, 需要使用 global 进行声明: 

 输出结果:

 


总结

对于名片系统的制作,我还没有特别的熟练,还是在来来回回的多熟悉,只是点设计的挺多的,主要还是有一部分逻辑的问题的分析的不是特别透彻。还是要多多练习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值