为啥此代码会根据缩进打印出不同的内容?

Posted

技术标签:

【中文标题】为啥此代码会根据缩进打印出不同的内容?【英文标题】:Why does this code print something different depending on the indentation?为什么此代码会根据缩进打印出不同的内容? 【发布时间】:2022-01-16 19:19:15 【问题描述】:

我注意到当print(msg) 没有在for 循环内缩进并且缩进与for循环相同的位置时,它只打印我所做的更新语句中的信息,但是当它是方式时它在下面,它应该如何为我提供我所要求的信息。

这是我的代码:

import sqlite3

conn = sqlite3.connect(':memory:')

with conn:
    cur = conn.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS tbl_roster(\
        col_name TEXT, \
        col_species TEXT, \
        col_iq TEXT \
        )")
    conn.commit()

with conn:
    cur = conn.cursor()
    cur.execute("INSERT INTO tbl_roster(col_name, col_species, col_iq) VALUES (?, ?, ?)", ('Jean-Baptiste Zorg', 'Human', '122'))
    cur.execute("INSERT INTO tbl_roster(col_name, col_species, col_iq) VALUES (?, ?, ?)", ('Korben Dallas', 'Meat Popsicle', '100'))
    cur.execute("INSERT INTO tbl_roster(col_name, col_species, col_iq) VALUES (?, ?, ?)", ("Ak'not", 'Mangalore', '-5'))
    conn.commit()


with conn:
    cur = conn.cursor()
    cur.execute("UPDATE tbl_roster SET col_species=? WHERE col_name=? AND col_iq=?",('Human', 'Korben Dallas', '100'))
    conn.commit()


with conn:
    cur = conn.cursor()
    cur.execute("SELECT col_name, col_iq FROM tbl_roster WHERE col_species = 'Human'")

    varSpecies = cur.fetchall()
    for item in varSpecies:
        msg = "Name:  \nIQ:   ".format(item[0], item[1])
        print(msg)

【问题讨论】:

请将您的代码以文本形式发布! Stack Overflow 不接受代码截图。 给出minimal reproducible example 作为文本,但可能:因为缩进在 Python 中有意义。 @KlausD。抱歉,抱歉不知道 Stack Overflow 不接受截图。谢谢。 【参考方案1】:

Python 使用缩进来定义块。如果您在for 循环下缩进print 行,则每次迭代都会调用它。如果不这样做,循环将在每次迭代中迭代并覆盖 msg,然后当它完成时,print 语句将打印最后一个值。

【讨论】:

以上是关于为啥此代码会根据缩进打印出不同的内容?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用notepad++编辑php代码 为啥没有缩进之类的格式的

条件判断

为啥在分析代码时缩进很重要?

CSS为啥我设置了缩进但是没效果

latex中脚注第一行为啥会向右缩进两个字

怎么设置悬挂缩进2字符