自学内容网 自学内容网

简单理解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']}")
每个函数都执行单一而清晰 的任务,要编写出清晰且易于维护和扩展的代码,这种划分必不可少。

原文地址:https://blog.csdn.net/u013638465/article/details/142828886

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!