Python-缩进错误,但不是由制表符和空格引起的

时间:2018-08-21 15:10:51

标签: python-3.x

VSCode在某些python代码上给了我缩进错误。我已经详尽地检查了代码,看是否是ol'混合制表符/空格问题(在代码中打开render white space,然后将代码粘贴到NPP中,然后打开View tabs and spaces和正则表达式搜索\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

是否需要在func1()下面缩进func2()?一直在搜寻,但尚未找到针对此特定问题的答案。显然,我是个糟糕的Googler,因为必须很容易找到它。伸出援手?

更新:

这是我收到的错误消息:

  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

更新2:

modified original example pseudo-code to better represent two-file code structure

2 个答案:

答案 0 :(得分:3)

如果要创建一个空块,可以使用pass

def func2(moredata):
    pass

这将创建一个不执行任何操作的函数(并返回None作为python中没有return的任何函数)。

答案 1 :(得分:0)

好吧,对于可能犯同样错误并正在寻找检查结果的未来Google员工-尽管使用了错误的数据,但Reut确实提出了解决方案。

我有一个正在编写的函数列表,所有代码都整齐地折叠起来:

func1():...
func2():...
func3():
func4():...
func5():...

我没注意到func3()是空的-我兔子跟踪了其他内容,打算马上回来,并且在转移注意力之前未能添加pass

事实证明,缩进func4()似乎并不能解决func4()的问题-同时我缩进它,我也将其重新定位在{{ 1}}。然后问题似乎转移到func3()上。

外卖:靠代码折叠生活的人,通过代码折叠死的。注意那些省略号!

非常感谢Joshua Avery和Reut Sharabani向我展示了我应该去的地方。