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