SyntaxError:'return'外部函数

时间:2017-02-18 23:53:53

标签: python python-3.x ipython-notebook

我有一个列表,有点类似于下面的列表。

  

lines = ['这是第1行',
       '这是另一条线',
       '这是第三行。第03行。']

当我运行return语句来处理该行的len时,

for line in lines:
    return(len(line))

生成以下错误:

  

档案“”,第2行           返程(LEN(线))
          ^
      SyntaxError:'return'在函数外

但我可以print行的长度,

for line in lines:
    print(len(line))

结果:

  14 p   20
  32

此实例中return语句在函数外的确切程度如何?

编辑: 这是我的笔记本中的样子。 http://imgur.com/w4EzlrH

2 个答案:

答案 0 :(得分:3)

您的缩进可能不一致。根据PEP-8的建议,每个缩进级别使用四个空格。其次,它应该在一个函数内部。第三,您的退货声明不会根据需要返回所有项目的长度。

答案 1 :(得分:2)

return函数用于将值传递回调用某个函数的位置。我看到它的方式,你基本上是试图覆盖返回值。您应该在执行某些操作的函数中使用它并返回值。您的循环和返回语句似乎不在函数中。

在下面的示例中,我将列表中的每个项目传递给check_len函数,该函数显然会检查项目的长度并将其返回。然后,打印列表中每个项目的长度。

示例:

var stats = {
  'operator_1': {
    conversions:
     [
       { 
         id: '3f002ab58',
         date: 13/03/2016
       },
       { 
         id: '4d002fb18',
         date: 14/03/2016
       }
      ]
    },
    'opertor_2': {
    conversions:
     [
       { 
         id: '1e03021149',
         date: 21/03/2016
       },

       { 
         id: '4bbc102fb18',
         date: 11/03/2016
       }
      ]
      }
}

var countries = [
  {id : '4bbc102fb18', country : 'russia'},
  {id : '33f3897300a', country : 'australia'},
  {id : '4d002fb18', country : 'usa'}
]

countries.map(country => {
	Object.keys(stats).map(operator => {
    let match = stats[operator].conversions.find(item => item.id === country.id)
    if (match) match.country = country.country
  })
})

console.log(stats)