2017-03-20 129 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中,他們只是說按價值!該語言引入的其他東西是迭代器和構造函數! –