V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
oppurst
V2EX  ›  问与答

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

  •  
  •   oppurst · Jun 18, 2023 · 3026 views
    This topic created in 1044 days ago, the information mentioned may be changed or developed.

    各位大佬好,

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

    自己一直在断断续续地自学 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)
    
    27 replies    2023-06-19 15:22:35 +08:00
    westoy
        1
    westoy  
       Jun 18, 2023   ❤️ 1
    topic_id 是一个变量, 下划线和其他数字英文一样没其他意思

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

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

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

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

    我说的直, 你别见怪

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

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

    我们这些会 python 的, 大部分对于 ai 来说也是门外汉, 和你不会 python 的没什么区别的.....
    ton618
        21
    ton618  
       Jun 18, 2023
    @winterbells 第一次学 scala ,也是同样的疑惑:-> 到底是啥意思啊,随便一个箭头就是语法?怎么有这么敷衍的语言呢…
    oppurst
        22
    oppurst  
    OP
       Jun 19, 2023
    @ecloud 谢谢大佬!马上去读
    oppurst
        23
    oppurst  
    OP
       Jun 19, 2023
    @NotFoundEgg 感谢大佬!逐渐开始明白了,我再回顾梳理一遍几个类和函数之间的逻辑,加深一下理解。
    oppurst
        24
    oppurst  
    OP
       Jun 19, 2023
    @westoy 不会不会,大佬言重了。虚心向各位大佬求教,任何分享对我来说都是有价值的参考。

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

    当然,医疗领域纯 AI 应用场景应该不容易带来巨大的增量市场,更多的会是融合性的场景,比如 AI+IoT ,或者配合脑机接口等等。
    huoshen
        25
    huoshen  
       Jun 19, 2023 via iPhone
    其实建议基础语法看看菜鸟教程之类的,如果你有学习别的语言的经验,大部分情况下语法会了已经会了一大半了,然后再搞应用。
    oppurst
        26
    oppurst  
    OP
       Jun 19, 2023
    问了 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
        27
    kokutou  
       Jun 19, 2023
    @oppurst #14 vscode 和 pycharm 不一样...不是一个级别的...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5065 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 106ms · UTC 01:09 · PVG 09:09 · LAX 18:09 · JFK 21:09
    ♥ Do have faith in what you're doing.