2014-07-13 108 views
9
from os import system 
def a(len1,hgt=len1,til,col=0): 
    system('mode con cols='+len1,'lines='+hgt) 
    system('title',til) 
    system('color',col) 

a(64,25,"hi","0b") 
input() 

當我運行它,它會拒絕「DEF一(...」,並強調「(」紅色的我不知道爲什麼語法錯誤:非默認參數如下默認參數

+0

請閱讀這樣的:http://legacy.python.org/dev/peps/pep-3102/ –

+1

可能重複[爲什麼非默認參數不能遵循默認參數?](http://stackoverflow.com/questions/16932825/why-non-default-arguments-cant-follows-default-argument) –

+0

什麼是錯誤信息? –

回答

7

讓我明確兩點的位置:

  • 首先非默認參數不應該遵循默認參數,這意味着你不能定義(A =「B」,C)在功能上在功能定義的參數的順序是:
    • 位置參數或非默認參數即(A,b,C)
    • 關鍵字參數或默認參數即(α= 「b」 中,r = 「J」)
    • 僅關鍵字參數(即,(*參數)
    • var-關鍵字參數i。E(** kwargs)

def example(a, b, c=None, r="w" , d=[], *ae, **ab):

(A,B)是位置參數

(C =無)是可選參數

(R = 「W」 )是關鍵字參數

(d = [])是列表參數

(* e)爲關鍵字只有

(* OPTS)是VAR關鍵字參數

所以首先重新安排你的參數

  • 現在次要的東西是你必須定義LEN1當你做hgt = len1 保存默認值時len1參數沒有定義,當你定義函數時,Python計算並保存默認值 len1沒有定義,不存在,發生這種情況時(只有當函數執行時才存在)

所以第二個刪除這個「len1 = hgt」它不允許在Python中。

保持參數和參數之間心靈的區別,你可以閱讀更多有關在這裏:Arguments and parameters in python

5

你可以。 「T有一個非關鍵字參數關鍵字參數後

確保您重新安排你的函數參數,像這樣:

def a(len1,til,hgt=len1,col=0): 
    system('mode con cols='+len1,'lines='+hgt) 
    system('title',til) 
    system('color',col) 

a(64,"hi",25,"0b") 
+0

它不喜歡它。 – AidanCodeX

8

隨着錯誤消息指出,非默認參數til不應該遵循默認參數hgt

更改參數順序(功能調用也會相應調整)或使hgt非默認參數可以解決您的問題。

def a(len1, hgt=len1, til, col=0): 

- >

def a(len1, hgt, til, col=0): 

UPDATE

是由隱藏的SyntaxError另一個問題。

os.system只接受一個字符串參數。

def a(len1, hgt, til, col=0): 
    system('mode con cols=%s lines=%s' % (len1, hgt)) 
    system('title %s' % til) 
    system('color %s' % col) 
+0

謝謝。還有一件事,請你給我一個鏈接到任何YouTube的Python教程系列,這是不是沒有日期? PLZ? – AidanCodeX

+0

@AidanCodeX,歡迎來到Stack Overflow!如果這對你有幫助,你可以通過[接受答案](http://meta.stackoverflow.com/a/5235)告訴社區。 – falsetru

+0

@AidanCodeX,我不知道youtube Python教程。如何從python.org [Python教程](https://docs.python.org/3/tutorial/)? – falsetru