2015-04-23 5 views
5

Więc obecnie uczę się Pythona na własnej skórze. W jednym z ćwiczeń drukujemy literały łańcuchowe ze zmiennymi między nimi. Zauważyłem, że w przeciwieństwie do innych języków, python automatycznie dodaje spację między literałem tekstowym a zmiennymi. Byłem ciekawy, jak to działa. Poniżej znajduje się przykład tego, co mam na myśli.W jaki sposób Python wie, jak dodać spację między literałem tekstowym a zmienną?

example.py:

total_SO_questions_asked = 1 
print "I have asked", total_SO_questions_asked, "question to SO thus far." 

zacisk:

$ python example.py 
I have asked 1 question to SO thus far. 

To jest głupie i nie bardzo ważne, ale jestem ciekawy, a ja z nadzieją, że może mnie oświecić SO!

+4

Nic nie dzieje się tutaj wewnętrznie. 'print' zawsze oddziela swoje argumenty od spacji, bez względu na to, czym są. – iCodez

+0

https://docs.python.org/2/reference/simple_stmts.html?highlight=print#grammar-token-print_stmt – TigerhawkT3

+3

@iCodez - nie należy odpowiadać na pytania w komentarzach, pozostawia je w stanie zawieszenia ... – DrCord

Odpowiedz

1

To jest po prostu cool cechą Pythona.

Są dwie rzeczy mające wiele argumentów: dodaje spację wokół parametrów jako niezbędnych i konwertuje każdy z argumentów na osobny ciąg znaków. wygląd

Miejmy w prosty sposób możemy potencjalnie skomplikowany kod za pomocą tych funkcji:

a = 5 
b = 3 
c = a + b 
print a, "plus", b, "equals", a+b 

Jeśli nie możemy mieć listę parametrów indywidualnie odlewane, że to brzydko wyglądać:

print str(a) + " plus " + str(b) + " equals " + str(a+b) 

z Zen Pythona, linie 1 i 3:

Piękny jest lepiej niż brzydkie.

Prostota jest lepsza niż złożona.

Aby uzyskać więcej informacji, sprawdź numer Python reference.

+1

Dziękujemy! To była bardzo jasna odpowiedź, zwłaszcza w odniesieniu do Zen Pythona, odpowiadając nie tylko na to, jak Python to robi, ale także dlaczego. OP jest szczęśliwy! –

+0

Cieszę się, że mogę pomóc! –

0

można łatwo wydrukować bez spacji:

>>> aa = 'abcd' 
>>> bb = 'efgh' 
>>> n = 1 
>>> print "%s%d%s" % (aa, n, bb) 
abcd1efgh 
>>> 
+1

Lepiej użyć ['' 'str.format()' ''] (https://docs.python.org/2/library/stdtypes.html#str.format) do tego ('' 'print" { } {} {}. "format (aa, n, bb)" "). Bez względu na to, nie odpowiedziałeś na pytanie PO. – pzp

0

Nic mądry tu się dzieje wewnętrznie. print zawsze oddziela swoje argumenty od spacji, bez względu na to, czym są.

(Odpowiedź bezwzględnie skradzione z komentarzem iCodez za)

Powiązane problemy