13
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi là người mới trên Python.
Tôi chạy mã sau trên Python 2.7 và tôi thấy kết quả khác nhau khi tôi sử dụng in hoặc in []. Sự khác biệt giữa hai chức năng này là gì? Tôi đọc các câu hỏi khác, ví dụ: câu hỏi này, nhưng tôi không tìm thấy câu trả lời của mình.
class Rectangle:
def __init__[self, w, h]:
self.width = w
self.height = h
def __str__[self]:
return "[The width is: {0}, and the height is: {1}]".format[self.width, self.height]
box = Rectangle[100, 200]
print ["box: ", box]
print "box: ", box
Kết quả là:
['box: ', ]
box: [The width is: 100, and the height is: 200]
Đã hỏi ngày 30 tháng 11 năm 2015 lúc 10:45Nov 30, 2015 at 10:45
1
Trong Python 2.7 [và trước đó], print
là một tuyên bố có một số đối số. Nó in các đối số với một không gian ở giữa.
Vì vậy, nếu bạn làm
print "box:", box
Trước tiên, nó in chuỗi "hộp:", sau đó là một khoảng trống, sau đó bất cứ điều gì
['box: ', ]
box: [The width is: 100, and the height is: 200]
0 in dưới dạng [kết quả của hàm ['box: ', ]
box: [The width is: 100, and the height is: 200]
1 của nó].Nếu bạn làm
print ["box:", box]
Bạn đã đưa ra một đối số, một tuple bao gồm hai phần tử ["hộp:" và đối tượng ____10].
Tuples in làm đại diện của chúng [chủ yếu được sử dụng để gỡ lỗi], do đó, nó gọi
['box: ', ]
box: [The width is: 100, and the height is: 200]
3 của các yếu tố của nó thay vì ['box: ', ]
box: [The width is: 100, and the height is: 200]
1 của chúng [sẽ cung cấp thông điệp thân thiện với người dùng].Đó là sự khác biệt mà bạn thấy:
['box: ', ]
box: [The width is: 100, and the height is: 200]
5 là kết quả của ____11 của hộp của bạn, nhưng ['box: ', ]
box: [The width is: 100, and the height is: 200]
7 là ['box: ', ]
box: [The width is: 100, and the height is: 200]
3 của nó.Trong Python 3 trở lên,
['box: ', ]
box: [The width is: 100, and the height is: 200]
9 là một hàm bình thường như bất kỳ chức năng nào khác [vì vậy print "box:", box
0 in print "box:", box
1 và print "box:", box
2 là lỗi cú pháp]. Nếu bạn muốn có điều đó trong Python 2.7, hãy đặtfrom __future__ import print_function
Ở đầu tệp nguồn của bạn, để làm cho nó sẵn sàng hơn một chút cho hiện tại.
Đã trả lời ngày 30 tháng 11 năm 2015 lúc 10:54Nov 30, 2015 at 10:54
REMCOGERLICHREMCOGERLICHRemcoGerlich
29,6K5 Huy hiệu vàng63 Huy hiệu bạc78 Huy hiệu Đồng5 gold badges63 silver badges78 bronze badges
Điều này chủ yếu là một bổ sung cho các câu trả lời khác.
Bạn có thể thấy trong các tập lệnh Python 2
print "box:", box
3 khi việc sử dụng bình thường sẽ là print "box:", box
4.Nó sử dụng thực tế là
print "box:", box
5 chỉ là một biểu hiện trong Python 2 với được xem đơn giản là print "box:", box
6 vì vậy print "box:", box
7 và print "box:", box
4 hoạt động giống hệt nhau trong Python 2 - nhưng chỉ hoạt động khi in một biến duy nhấtone single variableĐiểm thú vị là khi bạn xem xét việc di chuyển sang Python 3,
print "box:", box
7 [ở đây, cuộc gọi để in chức năng] đã là cú pháp chính xác.function print] is already the correct syntax.TL/DR:
print "box:", box
7 trong Python 2 chỉ là một mẹo để giảm bớt sự di chuyển của Python3 bằng cách sử dụng thực tế rằng print "box:", box
5 chỉ là một biểu thức - hình thức tuple sẽ là print ["box:", box]
2Đã trả lời ngày 30 tháng 11 năm 2015 lúc 11:26Nov 30, 2015 at 11:26
Serge Ballestaserge BallestaSerge Ballesta
Huy hiệu vàng 139K1111 gold badges114 silver badges234 bronze badges
Trong ví dụ đầu tiên bạn đang in tuple, nhưng không gọi chức năng in. Vì vậy, những điều sau đây là giống hệt nhau:
a = ["box: ", box]
print a
Nói cách khác, trong ví dụ đầu tiên bạn đã tạo một tuple và in nó. Đầu ra khác nhau, cho các kiểu dữ liệu khác nhau.
Được cho là không có sự khác biệt đáng kể giữa chức năng và tuyên bố cho trường hợp của bạn, nhưng vì lợi ích của tương lai, tôi rất tư vấn cho bạn luôn luôn sử dụng chức năng [
['box: ', ]
box: [The width is: 100, and the height is: 200]
9]. Tuy nhiên, nếu bạn vẫn quan tâm đến sự khác biệt [không liên quan đến trường hợp của bạn], với chức năng in, bạn có thể chỉ định phân tách, kết thúc và nơi xuất ra như mô tả trong tài liệu.Đã trả lời ngày 30 tháng 11 năm 2015 lúc 10:47Nov 30, 2015 at 10:47
2
Trong Python 2.7 in [] nhanh hơn in. Ở đây một bài kiểm tra thực hiện với Reppl.it Python Console Online:
import time
start_time = time.time[]
print "lol"
end_time = time.time[]
print[end_time - start_time]
start_time_2 = time.time[]
print ["lol"]
end_time_2 = time.time[]
print[end_time_2 - start_time_2]
print[[end_time_2 - start_time_2] > [end_time - start_time]]
Python 2.7.10
[GCC 4.8.2] on linux
lol
7.08103179932e-05
lol
1.00135803223e-05
False
Đã trả lời ngày 3 tháng 2 năm 2019 lúc 15:41Feb 3, 2019 at 15:41
2
Trong Python 2.7: In không phải là một hàm, nó là một từ khóa và hoạt động như một tuyên bố đặc biệt.
Trước đó, chúng ta cần tìm hiểu thêm về tuple và expr trong Python2.
Nếu chúng ta viết ['Xin chào']: nó được coi là một biểu thức, không phải là một tuple, nó chỉ có thể được coi là một tuple nếu "," được giới thiệu.
eg:
print["hello"]
>>> hello
a=["hello"]
>>>'hello'
a=["hello", "world"]
>>>['hello', "world"]
print["hello", "world"]
>>> ['hello', 'world']
Vì vậy, trong Python2.7, khi chúng ta sử dụng câu lệnh in với dấu ngoặc đơn, nó vẫn được coi là một tuyên bố không phải là hàm python và giá trị với dấu ngoặc đơn được coi là một tuple hoặc một biểu thức trong khi ở Python 3, in không còn là một tuyên bố được coi là một chức năng.
Để sử dụng chức năng in của Python 3 trong Python2, hãy sử dụng câu lệnh nhập khẩu sau đây,
from __future__ import print_function
Đã trả lời ngày 24 tháng 10 năm 2019 lúc 10:49Oct 24, 2019 at 10:49