2015-12-09 24 views
7

Sono un nuovo programmatore che attualmente sta studiando le sfumature di Python. La mia domanda per te è, cos'è esattamente un letterale in python? Ho cercato la risposta su google e nei documenti python, ma google si limita a riferimenti a stringhe letterali e i documenti python non dichiarano esplicitamente cos'è un letterale. Mi sono imbattuto in questa pagina http://www.dalkescientific.com/writings/NBN/python_intro/literals.html che ha fornito la seguente risposta:Cosa sono i letterali in Python?

Gli oggetti sono anche chiamati strutture dati. Python viene fornito con alcuni oggetti incorporati. Alcuni sono usati così spesso che Python ha un modo rapido per creare questi oggetti, chiamati letterali. I valori letterali includono la stringa, la stringa unicode, il numero intero, il float, il lungo, l'elenco, la tupla e i tipi di dizionario.

È corretto? Posso supporre che i letterali siano solo un altro termine per gli oggetti built-in di Python? Ci sono altri letterali che non sono stati trattati nella descrizione? Avevo l'impressione che esistesse una cosa come un binario letterale, e che i booleani fossero anche considerati letterali.

+0

La differenza si riferisce al costruttore - si veda [qui per un esempio 'dict'] (http://stackoverflow.com/questions/6610606/is-there-a-difference-between-using-a-dict-literal -e-a-dict-costruttore) che trasporta. – Stefan

+1

Un letterale è qualcosa che viene definito nelle specifiche della sintassi dei linguaggi che crea determinati tipi di dati. Per questo motivo non è possibile rinominarlo o modificarlo.Considera la differenza tra '[]' e 'list()' il primo crea sempre una lista mentre il secondo deve cercare cosa 'list' è quale default costruirà un elenco ma non necessariamente se' list' fosse riassegnato altrove. – shuttle87

+1

Questa domanda è stata molto migliore per me rispetto a quella "già risposta" e, soprattutto, ** diversa ** a quella. Dato che le persone che cercano queste domande non necessariamente sanno - anzi molto probabilmente non lo fanno - che le costanti letterali e letterali sono fondamentalmente le stesse. – Martec

risposta

1

In questo contesto, penso che significhi solo che il parser Python accetta una sintassi integrata per queste entità. Ad esempio, è un "abc"str, 123 è un int, 1.2 è un float, ecc

14

Un letterale è qualcosa che il parser riconosce come sintassi per scrivere direttamente un oggetto. Alcuni esempi in Python 2:

  • -3, -2, -1, 0, 1, 2, 3 (int letterali)
  • 2+3j, 0+5j, 2j, -3-5j (complex letterali)
  • 3.5, -2.7 (float letterali)
  • "", "hello" (str letterali)
  • u"", u"hello" (unicode letterali)
  • [], [1,2] (list letterali)
  • (), (1,), (1,2) (tuple letterali)
  • {}, {'a': 2} (dict letterali)
  • {1,2,3} (set letterale introdotto in Python 2,7)
  • None (I che questo è considerato un letterale, e non una parola chiave o semplice.)

Non c'è letterale per un insieme vuoto, come la notazione ovvia {} è già un valore letterale dict. Python 2 non ha veri valori letterali booleani; True e False sono semplicemente nomi globali incorporati per gli oggetti booleani.Una tupla viene tecnicamente creata dalla virgola e le parentesi sono necessarie solo quando è necessario disambiguare l'espressione; l'eccezione è la tupla vuota (). risposta

Sede di phihag per alcune differenze di Python 3.

+0

Grazie, questo lo ha spiegato bene! – silenz

+0

Questo e il phihag hanno chiarito cosa è letterale per una volta ... dopo così tante ricerche ... grazie! – Martec

3

letterali is a language-independent programming term. Un letterale è un modo succinto e facilmente visibile per scrivere un valore. Ad esempio, è possibile costruire il valore zero con int(), ma l'0 è molto più conveniente.

In Python, le seguenti letterali sono disponibili:

  • stringhe di caratteri, quali 'Düsseldorf', u'Köln' (la prima è una stringa di byte di Python 2.x)
  • stringhe Byte tali come b'\x89PNG'
  • letterali intero tale -12
  • letterali galleggiante come 1.2e-19
  • Complex letterali come 1+2.3j
  • letterali booleani: True e False (non letterali in più vecchio (2.x) versioni di Python)
  • None
  • tuple: (1, 2, 3)
  • Liste: [1, 2, 3]
  • dicts: {1: 'one', 2: 'two'}
  • Set: {1, 2, 3}
+0

Grazie! Primo esempio che rende più di qualcosa di diverso da una variabile ... +++++ – Martec

1

Posso supporre che i letterali siano solo un altro termine per gli oggetti built-in di Python?

Chiudi. Sono un modo di scrivere (alcuni di) oggetti built-in di Python. Se hai bisogno, diciamo, di un numero particolare, e non lo stai leggendo da un file o dall'utente o recuperandolo da un database o calcolandolo o importandolo da un altro modulo o o ... puoi usare un valore letterale numerico per inserirlo nel tuo codice.

number = 42 

number qui è il numero intero 42, specificato utilizzando un letterale.

I valori di Python True e False (e None) non sono realmente letterali, ma nomi predefiniti per tali valori. Ma il concetto è simile: Python ti dà un modo per scrivere quei valori direttamente nel tuo codice.

Quasi tutti i linguaggi di programmazione hanno letterali per la maggior parte dei loro tipi usati di frequente.