Hướng dẫn python 2 print parentheses - python 2 in dấu ngoặc đơn

Trong Python 2.7, cả hai điều sau đây sẽ làm như vậy

print("Hello, World!") # Prints "Hello, World!"

print "Hello, World!" # Prints "Hello, World!"

Tuy nhiên những điều sau đây sẽ không

print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")

print "Hello,", "World!" # Prints the words "Hello, World!"

Trong ngoặc đơn Python 3.x trên print là bắt buộc, về cơ bản làm cho nó trở thành một chức năng, nhưng trong 2.7 cả hai sẽ hoạt động với các kết quả khác nhau. Tôi nên biết gì khác về print trong Python 2.7?

Hướng dẫn python 2 print parentheses - python 2 in dấu ngoặc đơn

Khi được hỏi ngày 31 tháng 5 năm 2011 lúc 4:18May 31, 2011 at 4:18

4

Trong Python 2.x print thực sự là một tuyên bố đặc biệt và không phải là một hàm*.

Đây cũng là lý do tại sao nó không thể được sử dụng như:

print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")

print "Hello,", "World!" # Prints the words "Hello, World!"
0

Lưu ý rằng

print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")

print "Hello,", "World!" # Prints the words "Hello, World!"
1 không tạo ra một tuple (nó dẫn đến
print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")

print "Hello,", "World!" # Prints the words "Hello, World!"
2), nhưng
print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")

print "Hello,", "World!" # Prints the words "Hello, World!"
3 thì có. Điều này có thể dẫn đến sự nhầm lẫn giữa
print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")

print "Hello,", "World!" # Prints the words "Hello, World!"
4 và
print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")

print "Hello,", "World!" # Prints the words "Hello, World!"
5 trong Python 2.7

(1)   # 1 -- no tuple Mister!
(1,)  # (1,)
(1,2) # (1, 2)
1,2   # 1 2 -- no tuple and no parenthesis :) [See below for print caveat.]

Tuy nhiên, vì print là một câu lệnh Syntax/ngữ pháp đặc biệt trong Python 2.x sau đó, không có dấu ngoặc đơn, nó đối xử với ____ 13 theo cách đặc biệt - và không tạo ra một tuple. Điều trị đặc biệt này của tuyên bố print cho phép nó hành động khác nhau nếu có một dấu vết

print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")

print "Hello,", "World!" # Prints the words "Hello, World!"
3 hay không.

Mã hóa hạnh phúc.


*Hành vi print này trong Python 2 có thể được thay đổi thành của Python 3:

from __future__ import print_function

user2357112

242K26 Huy hiệu vàng393 Huy hiệu bạc470 Huy hiệu Đồng26 gold badges393 silver badges470 bronze badges

Đã trả lời ngày 31 tháng 5 năm 2011 lúc 4:25May 31, 2011 at 4:25

1

Tất cả đều rất đơn giản và không liên quan gì đến khả năng tương thích về phía trước hoặc lùi.

Mẫu chung cho câu lệnh print trong tất cả các phiên bản Python trước phiên bản 3 là:

print expr1, expr2, ... exprn

(Mỗi biểu thức lần lượt được đánh giá, chuyển đổi thành một chuỗi và được hiển thị với một khoảng trống giữa chúng.)

Nhưng hãy nhớ rằng việc đặt dấu ngoặc đơn xung quanh một biểu thức vẫn là cùng một biểu thức.

Vì vậy, bạn cũng có thể viết cái này như:

print (expr1), (expr2), ... (expr3)

Điều này không liên quan gì đến việc gọi một chức năng.

Hướng dẫn python 2 print parentheses - python 2 in dấu ngoặc đơn

Đã trả lời ngày 31 tháng 5 năm 2011 lúc 5:33May 31, 2011 at 5:33

Don O'Donnelldon O'DonnellDon O'Donnell

4.4283 Huy hiệu vàng25 Huy hiệu bạc27 Huy hiệu đồng3 gold badges25 silver badges27 bronze badges

2

Ở đây chúng tôi có tác dụng phụ thú vị khi nói đến UTF-8.

>> greek = dict( dog="σκύλος", cat="γάτα" )
>> print greek['dog'], greek['cat']
σκύλος γάτα
>> print (greek['dog'], greek['cat'])
('\xcf\x83\xce\xba\xcf\x8d\xce\xbb\xce\xbf\xcf\x82', '\xce\xb3\xce\xac\xcf\x84\xce\xb1')

Bản in cuối cùng là tuple với các giá trị byte thập lục phân.

Hướng dẫn python 2 print parentheses - python 2 in dấu ngoặc đơn

Đã trả lời ngày 15 tháng 8 năm 2012 lúc 17:05Aug 15, 2012 at 17:05

Karlo Smidkarlo SmidKarlo Smid

5161 Huy hiệu vàng5 Huy hiệu bạc13 Huy hiệu đồng1 gold badge5 silver badges13 bronze badges

6

Về cơ bản trong Python trước Python 3, bản in là một tuyên bố đặc biệt in tất cả các chuỗi nếu có như đối số. Vì vậy,

(1)   # 1 -- no tuple Mister!
(1,)  # (1,)
(1,2) # (1, 2)
1,2   # 1 2 -- no tuple and no parenthesis :) [See below for print caveat.]
2 chỉ đơn giản có nghĩa là "in 'foo' theo sau là 'thanh'". Vấn đề với điều đó là thật hấp dẫn khi hành động như thể in là một chức năng, và ngữ pháp Python không rõ ràng về điều đó, vì
(1)   # 1 -- no tuple Mister!
(1,)  # (1,)
(1,2) # (1, 2)
1,2   # 1 2 -- no tuple and no parenthesis :) [See below for print caveat.]
3 là một tuple chứa
(1)   # 1 -- no tuple Mister!
(1,)  # (1,)
(1,2) # (1, 2)
1,2   # 1 2 -- no tuple and no parenthesis :) [See below for print caveat.]
4 và
(1)   # 1 -- no tuple Mister!
(1,)  # (1,)
(1,2) # (1, 2)
1,2   # 1 2 -- no tuple and no parenthesis :) [See below for print caveat.]
5 nhưng
(1)   # 1 -- no tuple Mister!
(1,)  # (1,)
(1,2) # (1, 2)
1,2   # 1 2 -- no tuple and no parenthesis :) [See below for print caveat.]
6 là một lời kêu gọi của hai đối số.

Vì vậy, họ đã thực hiện thay đổi không tương thích cho 3 để làm cho các chương trình ít mơ hồ và đều đặn hơn.

(Trên thực tế, tôi nghĩ rằng 2.7 hành xử như 2.6 đã làm điều này, nhưng tôi không chắc chắn.)

Đã trả lời ngày 31 tháng 5 năm 2011 lúc 4:28May 31, 2011 at 4:28

Hướng dẫn python 2 print parentheses - python 2 in dấu ngoặc đơn

Charlie Martincharlie MartinCharlie Martin

108K23 Huy hiệu vàng192 Huy hiệu bạc258 Huy hiệu đồng23 gold badges192 silver badges258 bronze badges

1