关于无效语法的奇怪错误

时间:2011-02-14 10:26:46

标签: python

我在这个语句的python脚本中出现了无效的语法错误

44 f = open(filename, 'r')
45 return

 return
    ^
SyntaxError: invalid syntax

我不确定这里到底出了什么问题?我是一个蟒蛇新手,所以如果有人能请求帮助,我将非常感激。

我使用的是2.3.4版本

8 个答案:

答案 0 :(得分:27)

我遇到了同样的问题。这是我的代码:

def gccontent(genomefile):
    nbases = 0
    totalbases = 0
    GC = 0
    for line in genomefile.xreadlines():
        nbases += count(seq, 'N')
        totalbases += len(line)
        GC += count(line, 'G' or 'C')
    gcpercent = (float(GC)/(totalbases - nbases)*100
    return gcpercent

'return'是无效的语法

我根本无法关闭以下代码的括号:

gcpercent = (float(GC)/(totalbases - nbases)*100

希望这有帮助。

答案 1 :(得分:9)

当我忘记关闭代码上的括号时,返回时出现“无效语法”。

elif year1==year2 and month1 != month2:
    total_days = (30-day1)+(day2)+((month2-(month1+1))*30   
    return (total_days)    

返回时语法无效。

((month2-(month1+1))*30  <---- there should be another bracket

((month2-(month1+1)))*30

现在我的代码有效了。

他们应该改进python告诉你是否忘记关闭括号而不是在返回时使用“无效”语法。

答案 2 :(得分:8)

在普通的return语句中获得“无效语法”几乎是不可能的。如果你在函数之外使用它,你会得到'return' outside function,如果你得到错误的缩进,你会得到IndentationError等。

我可以在return语句中获得SyntaxError: invalid syntax的唯一方法是,实际上它根本不会说return,但是如果它包含非ascii字符,例如{{ 1}}。这给了这个错误。现在,如果没有看到它,你怎么能有这个错误?同样,我能提出的唯一想法是你实际上有缩进,但这个缩进不是空格或制表符。例如,您可以在代码中以某种方式插入不间断的空格。

是的,这可能发生。是的,我遇到过这种情况。是的,你得到retürn

答案 3 :(得分:3)

我只是看了这个因为我遇到了同样的问题(计划返回语句中的语法错误无效),而且我在python(第一个月)非常新,所以我不知道我在做什么大部分时间

我发现了我的错误,我忘记了前一行的结尾括号。尝试检查上一行的结尾是否有遗忘的括号或引用?

答案 4 :(得分:2)

通常它是一个括号语法错误。检查错误。

答案 5 :(得分:1)

>>> 45 return
  File "<stdin>", line 1
    45 return
            ^
SyntaxError: invalid syntax
>>> 

这可以解释一下。它没有解释44 f = open(filename, 'r'),但我怀疑有人复制并粘贴了45行代码,其中缩进缩进并包含行号。

答案 6 :(得分:0)

我试图通过在“ if”块中返回简单的变量赋值来遇到类似的问题。

    elif len(available_spots)==0:
    return score=0 

那会给我一个语法错误。我只是通过在返回之前添加一条语句来解决它

 elif len(available_spots)==0:
    score=0
    return score

答案 7 :(得分:0)

我有同样的问题。我的问题是,我在return语句中混合了数据类型。例如

Microsoft(R) Test Execution Command Line Tool Version 16.7.0
Copyright (c) Microsoft Corporation.All rights reserved.

Starting test execution, please wait...

A total of 1 test files matched the specified pattern.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured.Key { 8ad52f98 - 5736 - 4d40 - 85b9 - e758dd2823e4}
may be persisted to storage in unencrypted form.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {fd541f11-452b-4089-afd4-5f8cf81c43af} may be persisted to storage in unencrypted form.
  [xUnit.net 00:00:46.30][Test Class Cleanup Failure(Project.WebApi.IntegrationTests.Controllers.CommunityPostsControllerTests)] System.ObjectDisposedException
X Project.WebApi.IntegrationTests.Controllers.CommunityPostsControllerTests.GetPostById_ReturnsConfiguredResult [1ms]
Error Message:
   [Test Class Cleanup Failure(Project.WebApi.IntegrationTests.Controllers.CommunityPostsControllerTests)]: System.ObjectDisposedException : The CancellationTokenSource has been disposed.
  Stack Trace:
     at System.Threading.CancellationTokenSource.ThrowObjectDisposedException()
   at Hangfire.Pro.Redis.RedisStorage.Dispose()
   at Autofac.Core.Disposer.Dispose(Boolean disposing) in / home / appveyor / projects / autofac / src / Autofac / Core / Disposer.cs:line 38
   at Autofac.Util.Disposable.Dispose() in / home / appveyor / projects / autofac / src / Autofac / Util / Disposable.cs:line 32
   at Autofac.Core.Lifetime.LifetimeScope.Dispose(Boolean disposing) in / home / appveyor / projects / autofac / src / Autofac / Core / Lifetime / LifetimeScope.cs:line 414
   at Autofac.Util.Disposable.Dispose() in / home / appveyor / projects / autofac / src / Autofac / Util / Disposable.cs:line 32
   at Autofac.Core.Container.Dispose(Boolean disposing) in / home / appveyor / projects / autofac / src / Autofac / Core / Container.cs:line 142
   at Autofac.Util.Disposable.Dispose() in / home / appveyor / projects / autofac / src / Autofac / Util / Disposable.cs:line 32
   at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.Dispose() in / home / appveyor / projects / autofac - extensions - dependencyinjection / src / Autofac.Extensions.DependencyInjection / AutofacServiceProvider.cs:line 121
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.Dispose()
   at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.Dispose(Boolean disposing)
   at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.Dispose()
Results File: /home/vsts/work/_temp/_fv-az6-181_2020-11-02_12_27_22.trx

Test Run Failed.
Total tests: 49
     Passed: 48
     Failed: 1