2010-11-22 15 views
0

Was sind 'Ergebnis' und 'IncomingNumber' in dieser Syntax - sind das keine Parameter? Wie sind sie mit der Funktion readPhoneState verbunden?Python-Funktionsaufrufsyntax ... Ergebnis = foo() ['abc']

import android 

droid = android.Android() 
droid.startTrackingPhoneState() 

number = droid.readPhoneState()['result']['incomingNumber'] 

if number != None: 
    droid.speak('Call from '+str(number)) 
else: 
    droid.makeToast('No incoming call') 
+0

Sie brauchen nicht auch ein Dictionary-Objekt ist Codeabschnitte zu markieren, wie Sie getan haben. Einfach um 4 Leerzeichen einrücken. –

Antwort

9

droid.readPhoneState() gibt ein dict von dicts zurück. Equivalent Code:

outerDict = droid.readPhoneState() 
innerDict = outerDict['result'] 
number = innerDict['incomingNumber'] 
+0

+1 für weniger Wörter :) – khachik

+0

Vielen Dank, wo ist diese Syntax dokumentiert – Tiwari

+0

OK OK, habe es MY DUMB ... – Tiwari

2

result und incomingNumber sind der Schlüssel zu einem Wörterbuch oder eine Instanz einer Klasse, die Methode __getitem__ implementiert. Dies bedeutet, dass readPhoneState() ein Wörterbuchobjekt zurückgibt, das einen Schlüssel result haben soll, und der entsprechende Wert ist ein Wörterbuchobjekt, das einen Schlüssel incomingNumber haben soll.

+0

+1 für '__getitem__' –

0

Angeblich gibt readPhoneState() ein Dictionary zurück, dessen Werte wiederum Wörterbücher sind.

Mit dieser Syntax erhalten Sie das Wörterbuch - zurückgegeben von readPhoneState() - mit Schlüssel 'result' verbunden und fragen Sie nach dem Wert, dessen Schlüssel ist 'incomingNumber'.

1

Die Interpretation ist, dass droid.readPhoneState() einen dict zurückgibt, dessen Wert entsprechend dem Schlüssel 'result' ein weiterer dict ist.

1

readPhoneState() ist die Methode und gibt ein Dictionary-Objekt zurück.

Das Wörterbuch-Objekt enthält die Eigenschaft result, die die Eigenschaft enthält incomingNumber

Verwandte Themen