当前位置: 首页 > article >正文

简单理解Python代码的重构

版本一:
实现存储用户的名字:
remember_me.py
#易择365
from pathlib import Path
import json
username = input("请输入你的名字:")
path = Path('username.json')
contents = json.dumps(username)
path.write_text(contents)
print(f"已经记录了你的名字是:{username}!")
向名字已被存储的用户发出问候:
greet_user.py
#易择365
from pathlib import Path
import json
path = Path('username.json')
contents = path.read_text()
username = json.loads(contents)
print(f"欢迎回来, {username}!")

版本二:合并两个模块

remember_me.py

#易择365
from pathlib import Path
import json
def greet_user():
    """问候用户,并说出其名字"""
    path = Path('username.json')
    if path.exists():
        user = path.read_text()
        username = json.loads(user)
        print(f"欢迎回来, {username}!")
    else:
        username = input("请输入你的名字:")
        user = json.dumps(username)
        path.write_text(user)
        print(f"已经记录了你的名字:{username}!")
 

版本三:重构方法

抽取出获取用户名

remember_me.py

#易择365
from pathlib import Path
import json
def get_stored_username(path):
    if path.exists():
        user = path.read_text()
        username = json.loads(user)
        return username
    else:
        return None
def greet_user():
    """问候用户,并说出其名字"""
    path = Path('username.json')
    username = get_stored_username(path)
    if username:
        print(f"欢迎回来, {username}!")
    else:
        username = input("请输入你的名字:")
        user = json.dumps(username)
        path.write_text(user)
        print(f"已经记录了你的名字:{username}!")

继续抽取输入用户名:

#存储用户输入的名字:易择365
from pathlib import Path
import json
def get_stored_username(path):
    """读取存储的用户名字"""
    if path.exists():
        con=path.read_text()
        u_name=json.loads(con)
        return u_name
    else:
        return None
def get_new_username(path):
    """存储用户名字"""
    u_name=input("请输入你的名字:")
    con=json.dumps(u_name)
    path.write_text(con)
    return u_name
     
def greet_user():
    """问候用户"""
    path=Path('username.json')
    u_name=get_stored_username(path)
    if u_name:
        print(f"欢迎回来:{u_name}")
    else:
        u_name=get_new_username(path)
        print(f"已经记录了你的名字:{u_name}")

版本四:存储用户更多的信息

#存储用户输入的名字:易择365
from pathlib import Path
import json
def get_stored_username(path):
    """读取存储的用户名字"""
    if path.exists() and path.read_text():
            con=path.read_text()
            user=json.loads(con)
            return user
    else:
        return None
def get_new_username(path):
    """存储用户名字"""
    user={}
    user['u_name']=input("输入名字:")
    user['u_age']=input("输入年龄:")
    user['u_sex']=input("输入性别:")
    con=json.dumps(user)
    path.write_text(con)
    return user
     
def greet_user():
    """问候用户"""
    path=Path('username.json')
    user=get_stored_username(path)
    if user:
        print(f"欢迎您:{user['u_name']}")
    else:
        user=get_new_username(path)
        print(f"已经记录了你的名字:{user['u_name']}")

版本五:当前用户是否是上次运行该程序的用户

#易择365
from pathlib import Path
import json
def get_stored_username(path):
    """读取存储的用户名字"""
    if path.exists() and path.read_text():
            con=path.read_text()
            user=json.loads(con)
            return user
    else:
        return None
def get_new_username(path):
    """存储用户名字"""
    user={}
    user['u_name']=input("输入名字:")
    user['u_age']=input("输入年龄:")
    user['u_sex']=input("输入性别:")
    con=json.dumps(user)
    path.write_text(con)
    return user

def get_username_ask(user):
    req=input(f"{user['u_name']}是您的用户名吗?输入如:y/n")
    return req

def greet_user():
    """问候用户"""
    path=Path('username.json')
    user=get_stored_username(path)
    if user:
        if get_username_ask(user)=='y':
            print(f"欢迎您:{user['u_name']}")
        else:
            user=get_new_username(path)
            print(f"已经记录了你的名字:{user['u_name']}")
    else:
        user=get_new_username(path)
        print(f"已经记录了你的名字:{user['u_name']}")
每个函数都执行单一而清晰 的任务,要编写出清晰且易于维护和扩展的代码,这种划分必不可少。

http://www.kler.cn/news/343101.html

相关文章:

  • 重新学习Mysql数据库3:Mysql存储引擎与数据存储原理
  • 音频响度归一化 - python 实现
  • 自动驾驶系统研发系列—如何选择适合自动驾驶的激光雷达?从基础到高端全解读
  • Linux YUM设置仓库优先级
  • 【RabbitMQ——消息应答机制——分布式事务解决方式】
  • Qt中的网络客户端
  • 变倍镜头参数详解
  • MySQL数据库的详细学习步骤
  • 万能显卡驱动卸载工具 (DDU) Display Driver Uninstaller
  • 二手手机回收小程序开发,小程序功能分析
  • 刘二大人《PyTorch深度学习实践》完结合集Overview学习笔记
  • 山西农业大学20241011
  • JAVA八股文1
  • 芯课堂 | Synwit_UI_Creator(μgui)平台之图像处理篇
  • 中间件有哪些分类?
  • java Optional类与新的日期时间API
  • Spring Integration + MQTT
  • 浅谈C++之多线程处理TCP请求
  • 考研代码题:10.10 汉诺塔 爬楼梯 取球 猴子吃桃
  • 重学Java设计模式读后感之组合设计模式应用