2015-04-23 18 views
5

Vì vậy, tôi hiện đang học python một cách khó khăn. Trong một trong các bài tập chúng tôi in chuỗi ký tự bằng các biến số giữa chúng. Tôi nhận thấy rằng không giống như các ngôn ngữ khác python tự động thêm một khoảng trắng giữa một chuỗi ký tự và các biến. Tôi chỉ tò mò như thế nào. Dưới đây là một ví dụ về ý tôi.Làm thế nào để python biết thêm một dấu cách giữa một chuỗi ký tự và một biến?

example.py:

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

thiết bị đầu cuối:

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

Đây là ngớ ngẩn và không phải là rất quan trọng nhưng tôi tò mò, và tôi hy vọng rằng SO có thể soi sáng cho tôi!

+4

Không có gì thông minh đang diễn ra ở đây nội bộ. 'print' luôn tách biệt các đối số của nó với một dấu cách, bất kể chúng là gì. – iCodez

+0

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

+3

@iCodez - bạn không nên trả lời câu hỏi trong nhận xét, nó để chúng trong tình trạng ... – DrCord

Trả lời

1

Nó chỉ là một tính năng thú vị của Python.

Có hai điều có nhiều đối số: Nó thêm một khoảng trống xung quanh các tham số là số nguyên và nó chuyển đổi từng đối số thành một chuỗi riêng biệt.

Hãy nhìn vào cách đơn giản chúng ta có thể làm cho mã có khả năng phức tạp sử dụng các tính năng:

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

Nếu chúng ta không thể có một danh sách các thông số đúc riêng, nó muốn nhìn xấu xí:

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

Từ Zen của Python, dòng 1 và 3:

đẹp tốt hơn là xấu xí.

Đơn giản hơn là phức tạp.

Kiểm tra Python reference để biết thêm thông tin.

+1

Cảm ơn bạn! Đó là một câu trả lời rất rõ ràng, đặc biệt là liên hệ nó với Zen của Python, trả lời không chỉ cách python làm điều này mà còn tại sao. OP hạnh phúc! –

+0

Vui vì tôi có thể giúp! –

0

Bạn có thể dễ dàng in mà không cần không gian:

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

Tốt hơn nên sử dụng ['' 'str.format()' ''] (https://docs.python.org/2/library/stdtypes.html#str.format) cho điều này ('' 'print" { } {} {} ". Định dạng (aa, n, bb)' ''). Bất kể, bạn đã không trả lời câu hỏi của OP. – pzp

0

Không có gì minh đang xảy ra ở đây trong nội bộ. print luôn tách riêng các đối số của nó với một khoảng trắng, bất kể chúng là gì.

(trả lời một cách tàn nhẫn bị đánh cắp từ bình luận iCodez của)

Các vấn đề liên quan