אני לא בטוח שאשתמש בקוד הבא אבל הוא היה חמוד אז משתף אותו כאן - נניח שיש לכם נקודת קצה בפלאסק שמחזירה JSON, משהו כזה:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/hello', methods=['GET'])
def hello():
message = "Hello, world!"
return jsonify(message=message)
if __name__ == '__main__':
app.run(debug=True)
ואתם מקנאים בילדים המקובלים מ JavaScript שיכולים פשוט לכתוב:
return {message}
ולא צריכים לחזור על השם פעמיים, פעם אחת בשביל המפתח ופעם שנייה בשביל הערך, אז אתם יכולים לכתוב:
@app.route('/hello', methods=['GET'])
def hello():
message = "Hello, world!"
return jsonify(**locals())
כדי לקבל בדיוק את אותה תוצאה, ובלי להקליד את שם המשתנה אפילו פעם אחת. או, אם אתם חוששים (בצדק) שאיזה משתנה שלא התכוונתם ייכנס לכם ל JSON תוכלו לכתוב:
@app.route('/hello', methods=['GET'])
def hello():
message = "Hello, world!"
return jsonify(**{k: v for k, v in locals().items() if k in ['message']})
וכן זה קצת ארוך אבל אפשר לקצר עם פונקציית עזר ואז נקבל:
def only(d, *keys):
return {k: d[k] for k in keys}
@app.route('/hello', methods=['GET'])
def hello():
message = "Hello, world!"
foo = 10
bar = 20
return jsonify(**only(locals(), 'message', 'bar'))
חמוד? בטח. אבל לא הייתי רוצה לראות את זה בקוד אמיתי. החיסכון לא מספיק חשוב בשביל לראות קוד לא סטנדרטי.