2014-07-13 12 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() 

Quando ho eseguito questo, respinge "def una (..." e mette in evidenza "(" in rosso non ho idea perchéSyntaxError: argomento non predefinita seguente argomento di default

+0

si prega di leggere questo: http://legacy.python.org/dev/peps/pep-3102/ –

+1

possibile duplicato [Perché gli argomenti non predefiniti non possono seguire l'argomento predefinito?] (Http://stackoverflow.com/questions/16932825/why-non-default-arguments-cant-follows-default-argument) –

+0

Qual è il messaggio di errore? –

risposta

7

vorrei chiarire due punti qui:

  • in primo luogo non predefinito argomento non dovrebbe seguire argomento di default, significa che non è possibile definire (a = "b", c) in funzione ordine di definire parametri in funzione sono:
    • parametro posizionale o cioè il parametro non predefinito (a, b, c)
    • parametro chiave o parametro predefinito cioè (a = "b", r = "j")
    • parametro solo parole chiave i.e (* args)
    • parametro var-keyword i.e (**) kwargs

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

(a, b) sono parametro posizionale

(c = nessuno) è parametro opzionale

(r = "w") è il parametro della parola chiave

(d = []) è il parametro di lista

(* e) è (opta *) per parole chiave solo

è var-parola chiave parametro

così primi ri-organizzare i tuoi parametri di

  • cosa ora secondario è che devi definire len1 quando si è facendo hgt = len1 l'argomento len1 non viene definito quando vengono salvati i valori predefiniti, Python calcola e salva i valori predefiniti quando si definisce la funzione len1 non è definita, non esiste, quando ciò accade (esiste solo quando la funzione viene eseguita)

quindi secondo rimuovere "len1 = hgt" non è consentito in python.

tenere a mente la differenza tra la discussione e parametri, è possibile saperne di più qui: Arguments and parameters in python

5

È possibile.. 't hanno un argomento non-parola chiave dopo un argomento parola chiave

Assicurati di ri-organizzare i tuoi argomenti della funzione in questo modo:.

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

Non gli piace. – AidanCodeX

8

come dice il messaggio di errore, non predefinita argomento til non dovrebbe seguire predefinito argomento hgt.

Cambiare l'ordine dei parametri (anche la chiamata di funzione può essere regolata di conseguenza) o il parametro hgt non predefinito risolverà il problema.

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

->

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

UPDATE

Un altro problema che è nascosto dalla SyntaxError.

os.system accetta solo un parametro di stringa.

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

GRAZIE. Un'altra cosa, potresti darmi un link a qualsiasi serie di tutorial di youtube su Python CHE NON È DALLE DATA? plz? – AidanCodeX

+0

@AidanCodeX, Benvenuto in Stack Overflow! Se questo ti ha aiutato, puoi dire alla comunità in modo tale da [accettando la risposta] (http://meta.stackoverflow.com/a/5235). – falsetru

+0

@AidanCodeX, non conosco il tutorial di youtube su Python. Che ne dici di [tutorial Python] (https://docs.python.org/3/tutorial/) da python.org? – falsetru

Problemi correlati