2017-03-20 116 views
-5

我是python的新手。这是我的文件:python语法错误声明变量

contiguous.py:

def fillArray(len, val): 
    var arr = [], i 
    for i = 0; i < len; i++: 
     arr.append(val) 
    return arr 

我试图执行:

$ python contiguous.py 
    File "contiguous.py", line 2 
    var arr = [], i 
     ^
SyntaxError: invalid syntax 
$ python -V 
Python 3.6.0 

为什么出错?我错过了什么?

+4

因为这不是python ... – TemporalWolf

+2

那么,因为Python没有变量声明,我希望你得到一个错误... –

+0

严重的是,看看官方的[Python教程](https ://docs.python.org/3/tutorial/)。这非常好,特别是如果你已经有编程经验。 –

回答

2

你不必声明一个变量来在Python中使用它。你只是实例化。所以你只想写arr = []而没有i。此外,你的循环语法不正确。你应该写for i in range(len)

0

python中没有var关键字。只需删除它。

变量设定:

variable_x = [] 

而且,你在Python设置每行的多个变量的方法是:

variable_x, i = [], 0 

此外,你的循环看起来是错误的。它应该是:

for i in range(len): 
+0

更改声明为设置。谢谢! – meyer9

0

你不需要的关键字var。为了使arr一个数组,只是做:

arr = [] 

变量在Python没有类型,只有物体做。在任何给定时刻变量的类型都是它们在此刻引用的对象的类型。因此,上面的行将arr初始化为一个空列表,实际上也使arr成为一个列表。另外,还有一些关于你的代码的其他考虑:你正试图用一个值填充一个数组。有一个简单的方法来做到这一点:

arr = [val] * len 

在这种情况下,你甚至都不需要做arr=[],你的整个功能可以通过上面的线来代替。

+0

'[val] * len'通常是一个糟糕的主意,尤其对于新程序员来说,因为它只有在val不可变时才有效。 – TemporalWolf

0

在Python中,你不需要说var来分配变量,因为有没有变量声明在python中。你只是arr = []。因为i会引用一个不存在的变量,所以在赋值给变量之后也不应该说, i。由于您稍后分配了i,实际上根本不需要那么做。也使用for i in range(len)

+2

**在Python中没有变量声明** –

+0

@ juanpa.arrivillaga **这就是字面上我所说的** –

+0

不,这是*不是*字面意思就是你说的。你写了“不需要说'var'来声明变量”,并且你写了“自从你稍后声明'i'......”这两个语句暗示着某个变量被“声明”了。但**在Python **中没有变量声明。当名字被分配时,名字就会出现。 –

1

好吧,你在Python的功能是:

def fillArray(len, val): 
    arr = [] 
    for _ in range(len): 
     arr.append(val) 
    return arr 

这相当于:

def fillArray(len, val): 
    return [val] * len 

这两者都是危险的,如果valmutable:Python是pass by assignment,所以如果你试图让一排空列表,通过fillArray(len, []),你将有一个糟糕的一天。

+1

我更喜欢“分享电话”这个词......因为分享是关怀! –

+0

@ juanpa.arrivillaga也许这应该成为官方任期。 Fredrik Lundh的effbot文章[按对象调用](http://effbot.org/zone/call-by-object.htm)提到了通过共享作为同义词的呼叫......最终这可能是一个更好的来源,可能是某个人该主题困惑。 – TemporalWolf

+1

嗯,这是Barbara Liskov在发明[CLU]时使用的术语(https://en.wikipedia.org/wiki/CLU_(programming_language))。但这是一个相当无用的术语。事实上,在Java中,他们只是说按价值!该语言引入的其他东西是迭代器和构造函数! –