Python 3.x Python-缩进错误,但不是来自混合制表符和空格
VSCode在一些python代码上给了我缩进错误。我已经彻底检查了我的代码,看看它是否是ol'混合制表符/空格的问题(在代码中打开Python 3.x Python-缩进错误,但不是来自混合制表符和空格,python-3.x,Python 3.x,VSCode在一些python代码上给了我缩进错误。我已经彻底检查了我的代码,看看它是否是ol'混合制表符/空格的问题(在代码中打开渲染空白,并将代码粘贴到NPP中,打开查看制表符和空格和正则表达式搜索\t等),但事实并非如此。任何地方都没有制表符 所以我想知道是否所有函数都必须从它们的调用函数缩进 例如,这个语法有什么错误吗 from SGS_ExcelPrePythonPrep_funcs_ver0_01JD import * def main(): #some code m
渲染空白
,并将代码粘贴到NPP中,打开查看制表符和空格
和正则表达式搜索\t
等),但事实并非如此。任何地方都没有制表符
所以我想知道是否所有函数都必须从它们的调用函数缩进
例如,这个语法有什么错误吗
from SGS_ExcelPrePythonPrep_funcs_ver0_01JD import *
def main():
#some code
myVar = func1(data)
#more code
if __name__ == '__main__':
main()
#------ separate file: SGS_ExcelPrePythonPrep_funcs_ver0_01JD.py ------
def func1(data):
#more code
newVar = func2(moredata)
nutherVar = func3(data3)
#more code
def func2(moredata):
#WAS getting an indentation error here, until I intented
#more code
def func3(data3):
#now getting the indentation error here
#more code
func2()是否需要缩进到func1()下面?一直在谷歌上搜索,但还没有找到这个具体问题的答案。很明显,我是一个糟糕的谷歌搜索者,因为这必须很容易找到。援助之手
更新:
以下是我收到的错误消息:
File "w:\PyDev\SGS_ExcelPrePythonPrepAndFCode.py", line 13, in <module>
from SGS_ExcelPrePythonPrep_funcs_ver0_01JD import *
File "w:\PyDev\SGS_ExcelPrePythonPrep_funcs_ver0_01JD.py", line 198
def AlphaToIndex(ltr):
^
IndentationError: expected an indented block
如果要创建空块,可以使用:
这将创建一个不执行任何操作的函数(并且返回
None
,与python中任何不返回的函数一样)。好的,尽管使用了错误的数据,但Reut实际上找到了解决方案
我有一个正在编写的函数列表,所有代码都整齐地折叠起来:
func1():...
func2():...
func3():
func4():...
func5():...
我没有注意到func3()
是空的-我拖着兔子走到别的地方,打算马上回到它,并且在转移注意力之前没有添加pass
事实证明,缩进func4()
似乎并不能解决func4()
的问题——在缩进它的同时,我还将它直接定位在调用函数的下方,而调用函数位于func3()
上方。然后问题似乎转移到func5()
带走:靠密码折叠生活的人,靠密码折叠死去。注意那些椭圆
非常感谢Joshua Avery和Reut Sharabani,他们向我展示了我应该寻找的地方。您可以尝试从命令行执行它并查看吗?func2不能为空;您将得到“IndentationError:应为缩进块”。如果您希望函数不执行任何操作,请添加pass
。否,函数定义不需要在其调用函数下缩进。你能不能提供更多的细节,比如错误的文本?@Joshuavery-这就是我的想法(以及问题的原因)。我更新了问题以添加错误消息。对我来说特别奇怪的是,当我对接收到错误的被调用函数进行双缩进时,错误会转移到下一个(被调用的)函数,然后转移到下一个函数,等等。我对python很陌生,但我只是不记得以前必须缩进被调用的函数。您是否在main()
函数中定义函数?是的,我意识到这一点。抱歉,我提供的是我的代码结构的不可运行的超级缩写格式副本,而不是可运行的代码。但是你是对的——我应该添加它以使伪代码更具可读性。谢谢你指出这一点。(我已经更新了伪代码示例以修复该遗漏)
def func2(moredata):
pass
func1():...
func2():...
func3():
func4():...
func5():...