2016-04-01 3 views
0

Ich habe folgende Codesegment (von einem Arbeits Google Probe here):Passing Python Stringliteral als Argument, umgeben mit und ohne eckige Klammern

credentials = GoogleCredentials.get_application_default().create_scoped(
     ['https://www.googleapis.com/auth/cloud-platform']) 

entfernt I die eckigen Klammern um den Stringliteral und versucht, es wie folgt:

credentials = GoogleCredentials.get_application_default().create_scoped(
     'https://www.googleapis.com/auth/cloud-platform') 

Kein Unterschied, die Anwendung funktioniert immer noch gleich. Meine Fragen: Was sind die eckigen Klammern, und obwohl sie oben überflüssig erscheinen, sollen sie eine Versicherung gegen etwas anderes sein?

Ich verwende Python 3.5.1 auf Windows 7 x86.

+0

"Was sind eckige Klammern für"? Vielleicht sollten Sie sich das [offizielle Python-Tutorial] (https://docs.python.org/3.4/tutorial/index.html) ansehen. – TigerhawkT3

+1

Sie können mehrere Argumente in der Liste übergeben –

+1

@PadraicCunningham Vielen Dank für Ihren Einblick. – Sabuncu

Antwort

2

Die eckigen Klammern werden list display genannt und erzeugen ein Objekt list. Anscheinend akzeptiert die API entweder eine Liste oder eine Zeichenfolge. Dass die spezifische API sowohl eine Zeichenfolge als auch eine Liste akzeptiert, bedeutet nicht, dass die Syntax ansonsten bedeutungslos ist.

Die create_scopes() documentation ist ein bisschen zu dem Thema vage, nur das Argument als scopes (Plural) zu dokumentieren und zu erklären, dass es Erstellen Sie ein Anmeldeinformationen für die angegebenen Bereiche widersprechen.. Die Klasse GoogleCredentials fungiert als Dispatcher für verschiedene Umgebungen (in denen Anmeldeinformationen aus einer Datei oder aus einem App Engine-Speicher gelesen werden), aber aus dem, was ich sehen kann, wird der Wert oauth2client.util.scopes_to_string() an ' '.join() übergeben, wenn das Argument nicht a Zeichenfolge bereits; Für mehrere Bereiche können Sie also ein Tupel, eine Liste, einen Generator mit Bereichszeichenfolgen oder eine durch Leerzeichen getrennte Zeichenfolge übergeben.

+0

* "Dass die spezifische API sowohl eine Zeichenfolge als auch eine Liste akzeptiert, bedeutet nicht, dass die Syntax ansonsten bedeutungslos ist." * Ausgezeichnet, danke. – Sabuncu

Verwandte Themen