在函数定义上获取无效的syxtax

时间:2018-12-11 11:16:30

标签: python

def create_processor_groups(self, parent_id=None, name: str=None, position: tuple=(0, 0)):

我有这个函数定义,它在名称和位置上给了我无效的语法。如果我删除类型,则错误消失了,但这也应该起作用。怎么了

4 个答案:

答案 0 :(得分:1)

我认为您正在用python 2.7编写代码,这可能会引发错误。 Python 3.x应该可以运行您的代码。

答案 1 :(得分:0)

山姆。 执行您的代码时,解析时出现错误Unexpected EOF。这意味着您的代码结束是在块结束之前。 您应该在声明之后(里面)加上一些东西

def create_processor_groups(self, parent_id=None, name: str=None, position: tuple=(0, 0)): print('something')

答案 2 :(得分:0)

我看不到您的代码无法正常工作的任何直接原因,因此最可能的问题是您使用的Python版本<3.5。

另一个潜在的问题可能是函数主体中缺少任何代码,导致另一个答案中提到的EOF错误(尽管我认为您只是没有将其包含在问题中,因为您没有想到它是相关的)。 请注意,最好在您的 stackoverflow 问题中包含一个简单但完整的示例。

在Python 3.5.1中,使用整数参数可以按预期工作:

def dostuff(a: int):
  return 2*a

dostuff(1)
2

使用元组也是如此:

def domore(a: tuple):
  return a[0]

domore((3,5))
3

但是对于已知包含类型的元组(可能是您的情况),使用类型别名可能会更好(更严格),如下所示:

from typing import Tuple

TINT = Tuple[int]

def docoolstuff(a: TINT):
  return sum(a)

docoolstuff((1, 2, 3))
6

如果由于某种原因无法升级Python版本,则可能还有其他软件包在较低版本的Python中提供类型提示。

答案 3 :(得分:0)

尝试运行以下代码:(这将向您显示您实际使用的Python版本)

import sys
print(sys.version)

如果报告的Python版本是<3.5,则应首先调查环境并使用正确的预期版本。