Python在def函数中使用for循环 [英] python using for loop in def function

查看:27
本文介绍了Python在def函数中使用for循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在数据库集合中获取过去7天创建的文档。

fmt = "%Y-%m-%d"
today = datetime.now(timezone('Asia/Seoul'))
for i in range(0, 7):
    target = today - timedelta(days = i)
    week = target.strftime(fmt)
    hot_posts = list(db.collection.find({'date': week}, {'_id': False}).sort('like', -1))
    print(hot_posts)

这将为我提供从数据库中查找的正确文档集。

但当我将其插入def函数时,它不起作用。

fmt = "%Y-%m-%d"
today = datetime.now(timezone('Asia/Seoul'))
@app.route('/api/list/hot', methods=['GET'])
def show_hot():
    for i in range(0, 7):
        target = today - timedelta(days=i)
        week = target.strftime(fmt)
        hot_posts = list(db.collection.find({'date': week}, {'_id': False}).sort('like', -1))
        return jsonify({'hot_posts': hot_posts})

我认为我没有完全理解如何在正确的结构中使用def。 在这种情况下,在python中使用def的正确格式是什么? 我是否需要在for循环之前放置一些变量,并将其设置为Variable=[],以获得for循环的结果,并将其放入def函数可以使用的变量中? 我是否需要将一些for循环变量放入def函数的()中?

是这样的吗?

fmt = "%Y-%m-%d"
today = datetime.now(timezone('Asia/Seoul'))
@app.route('/api/list/hot', methods=['GET'])
def show_hot(range, list):
    hot_posts = []
    for i in range(0, 7):
        target = today - timedelta(days=i)
        week = target.strftime(fmt)
        hot_posts = list(db.collection.find({'date': week}, {'_id': False}).sort('like', -1))
    return jsonify({'hot_posts': hot_posts})

推荐答案

您可以创建一个空字典,并在迭代时更新它的键和值,然后返回结果字典。我尚未测试This代码,但我认为它应该可以正常工作。

fmt = "%Y-%m-%d"
today = datetime.now(timezone('Asia/Seoul'))
@app.route('/api/list/hot', methods=['GET'])
def show_hot():
    all_hot_posts = {}
    for i in range(0, 7):
        target = today - timedelta(days=i)
        week = target.strftime(fmt)
        hot_posts = list(db.collection.find({'date': week}, {'_id': False}).sort('like', -1))
        all_hot_posts.update({'hot_posts'+str(i+1): hot_posts})
    return jsonify(all_hot_posts)

在python函数中,我们不将关键字定义为参数。它们的解释方式与正常脚本一样。

这篇关于Python在def函数中使用for循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆