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

326 天前
 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)
2214 次点击
所在节点    问与答
27 条回复
westoy
326 天前
topic_id 是一个变量, 下划线和其他数字英文一样没其他意思

topic.id 是 topic 变量指向的对象的 id 属性

你是基础语法没好好看啊........
kaiveyoung
326 天前
@westoy 这是没看基础语法
miyuki
326 天前
topic_id 是函数传进来的参数名
pi0piK
326 天前
说实话这个问题,我当年学 python 的时候也有过……原因是面编程入门是学校的 C ,接触 python 的时候没弄明白 "." 的意义,这个问题知道我后来学 Java 才彻底解决😂
nikenidage1
326 天前
所以说 python 并不适合当第一门语言 ┑( ̄Д  ̄)┍
westoy
326 天前
@pi0piK

但是 c 的 struct 、union 也是通过.访问........
oppurst
326 天前
@westoy 好的大佬,我回去再翻翻
x02
326 天前
初学者往往忽略了一些最基础的概念, 标识符, 运算符,
zmaplex
326 天前
这个跟年龄没关系叭,之前教过 24 岁的妹子 Python 整得我心态都奔溃了。 就是没计算机基础,学得挺慢的🥲🥲
kokutou
326 天前
要不...先学下 java 吧...
kokutou
326 天前
不会没搞个 pycharm 这种 ide 吧...不会在记事本手写吧...
winterbells
326 天前
第一次看 jni 也是一样的疑惑,想了很久 -> 是什么玩意儿…
horizon
326 天前
要么,先学下 js ?
oppurst
326 天前
@kokutou 谢谢大佬提醒,那倒也不至于,用的 VS Code 😭
oppurst
326 天前
@zmaplex 哎,以前感觉自己学东西挺快的,现在发现岁月不饶人啊,特别是从 0 开始
oppurst
326 天前
@x02 感觉确实是基础部分翻得太快了,原本想着快速跟着教材敲一遍,先找找手感,现在发现基础部分确实不能草率。感谢各位大佬指教!谢谢!
oppurst
326 天前
@horizon 可惜时间精力有限,主要目标是想深入一下深度学习和人工智能相关的技术,所以还是先学会 Python 吧。感谢大佬的建议!
ecloud
326 天前
看标题我还以为你说__呢(俩),结果是没搞清楚单_跟字母是一回事……

看这个吧 https://www.runoob.com/w3cnote/python-5-underline.html
NotFoundEgg
326 天前
topic_id=topic_id 和 topic_id=topic.id ,等号左侧的是标注出等号右侧的参数赋值给哪个形参( python 函数在调用时,参数顺序是可以乱序的);其中_可以当作普通的字母看待,没有特殊含义;而.代表从对象取值(类似 js )
westoy
326 天前
@oppurst

我说的直, 你别见怪

如果你学 python 是为了搞 ai , 那可以放弃了

学玩手术刀, 玩得再好, 也不是学会给人动手术的路子啊, 你得去先去学人体结构、病理, 上手解剖, 在这个过程中顺便把手术刀玩遛.....

我们这些会 python 的, 大部分对于 ai 来说也是门外汉, 和你不会 python 的没什么区别的.....

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

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

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

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

© 2021 V2EX