跪了,要被 Python 的_和.搞崩溃了

2023-06-18 21:14:37 +08:00
 oppurst

各位大佬好,

首先感谢各位大佬能够点开这个弱鸡问题,因为确实挺基础的,让您能花时间看我问什么问题,极有可能会浪费掉您部分宝贵的时间,故而首先致敬🫡

自己一直在断断续续地自学 Python ,主要是跟着经典入门书籍《 Python 编程:从入门到实践(第 2 版)》在学习。在此之前毫无 coding 的任何基础,加之年纪又上来了,进度奇慢无比,对很多基础的东西理解起来似乎并不容易。目前学到第 19 章,在跟着书籍敲代码的过程中,对_.的使用区别愈发显得迷惑。

比如下面这段示例代码中,同样是获取topic_id,但是为啥new_entry中是使用的topic_id=topic_id,但是在edit_entry中就变成了topic_id=topic.id

这个问题网上搜了一圈,没有找到答案,实在是抱歉,要请各位大佬指点迷津!感谢!


def new_entry(request, topic_id):
    """add new post in topic"""
    topic = Topic.objects.get(id=topic_id)

    if request.method != 'POST':
        # data not submitted: create new entry form
        form = EntryForm()
    else:
        # POST submitted data: process the data
        form = EntryForm(data=request.POST)
        if form.is_valid():
            new_entry = form.save(commit=False)
            new_entry.topic = topic
            new_entry.save()
            return redirect('learning_logs:topic', topic_id=topic_id)

    context = {'topic': topic, 'form': form}
    return render(request, 'learning_logs/new_entry.html', context)


def edit_entry(request, entry_id):
    """edit current entry"""
    entry = Entry.objects.get(id=entry_id)
    topic = entry.topic

    if request.method != 'POST':
        # first time: use the as-is item to fill form
        form = EntryForm(instance=entry)
    else:
        # POST submitted data: process the data
        form = EntryForm(instance=entry, data=request.POST)
        if form.is_valid():
            form.save()
            return redirect('learning_logs:topic', topic_id=topic.id)

    context = {'entry': entry, 'topic': topic, 'form': form}
    return render(request, 'learning_logs/edit_entry.html', context)
2374 次点击
所在节点    问与答
27 条回复
zrc199021
2023-06-18 23:46:50 +08:00
@winterbells 第一次学 scala ,也是同样的疑惑:-> 到底是啥意思啊,随便一个箭头就是语法?怎么有这么敷衍的语言呢…
oppurst
2023-06-19 00:18:28 +08:00
@ecloud 谢谢大佬!马上去读
oppurst
2023-06-19 00:20:02 +08:00
@NotFoundEgg 感谢大佬!逐渐开始明白了,我再回顾梳理一遍几个类和函数之间的逻辑,加深一下理解。
oppurst
2023-06-19 00:31:10 +08:00
@westoy 不会不会,大佬言重了。虚心向各位大佬求教,任何分享对我来说都是有价值的参考。

说来凑巧,您举的例子恰好是我之前的一部分职业路径,不过已经跨行很久了。之所以想要研究 AI ,是感觉目前 AI 在医疗领域的应用,还相对缺乏想象力。当然,常规的像是影像诊断、药物早期开发等方面的应用已经相对比较成熟,但是未来的应用场景和技术革新,在潜力上应该还比较巨大,是个不错的发展方向。

当然,医疗领域纯 AI 应用场景应该不容易带来巨大的增量市场,更多的会是融合性的场景,比如 AI+IoT ,或者配合脑机接口等等。
huoshen
2023-06-19 00:50:02 +08:00
其实建议基础语法看看菜鸟教程之类的,如果你有学习别的语言的经验,大部分情况下语法会了已经会了一大半了,然后再搞应用。
oppurst
2023-06-19 15:19:07 +08:00
问了 ChatGPT ,居然识别出来了,太牛了:

在这段代码中,topic_id 是作为参数传递给函数 new_entry 和 edit_entry 的值。它表示一个主题的唯一标识符。

在 new_entry 函数中,topic_id 是直接使用的,因为它代表传递给函数的参数值。

在 edit_entry 函数中,entry_id 表示要编辑的条目的唯一标识符。首先,通过使用 entry_id 从数据库中获取相应的 entry 对象。然后,从 entry 对象中获取其所属的 topic 对象,将其赋值给 topic 变量。这里使用 topic.id 是为了获取 topic 对象的唯一标识符,以便在重定向时将其作为参数传递给 learning_logs:topic 视图。

总结起来:

topic_id 表示主题的唯一标识符,直接使用其值。
topic.id 表示主题对象的唯一标识符,用于重定向时传递给视图。
kokutou
2023-06-19 15:22:35 +08:00
@oppurst #14 vscode 和 pycharm 不一样...不是一个级别的...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/949772

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX