Lưu ý rằng tuyên bố của Tim là hoàn toàn chính xác: có là chỉ có một cách rõ ràng để làm điều đó: print()
. Hai khả năng khác mà bạn đề cập có các mục tiêu khác nhau.
Nếu chúng ta muốn tóm tắt các mục tiêu của ba lựa chọn:
print
là chức năng cao cấp cho phép bạn viết một cái gì đó để thiết bị xuất chuẩn (hoặc một tập tin khác). Nó cung cấp một API đơn giản và dễ đọc, với một số tùy chọn ưa thích về cách các mục đơn lẻ được tách ra, hoặc cho dù bạn muốn thêm hay không một terminator vv Đây là những gì bạn muốn làm hầu hết thời gian.
sys.stdout.write
chỉ là phương pháp của đối tượng tệp. Vì vậy, điểm thực của sys.stdout
là bạn có thể truyền nó xung quanh như thể nó là bất kỳ tệp nào khác. Điều này rất hữu ích khi bạn phải đối phó với một hàm đang mong đợi một tệp và bạn muốn nó in văn bản trực tiếp trên stdout.
Nói cách khác, bạn không nên sử dụng sys.stdout.write
. Bạn chỉ cần vượt qua khoảng sys.stdout
để mã mong đợi một tệp.
Lưu ý: trong python2 có một số trường hợp sử dụng mã vạch print
sản xuất mã tồi tệ hơn gọi số sys.stdout.write
. Tuy nhiên, chức năng print
cho phép bạn xác định dấu phân tách và dấu kết thúc và do đó tránh hầu như tất cả các trường hợp góc này.
os.write
là mức thấp gọi để ghi vào tệp. Bạn phải mã hóa nội dung theo cách thủ công và bạn cũng phải chuyển qua bộ mô tả tệp một cách rõ ràng. Điều này có nghĩa là chỉ xử lý mã mức thấp, vì một lý do nào đó, không thể triển khai trên đầu các giao diện cấp cao hơn. Bạn hầu như không bao giờ muốn gọi trực tiếp điều này, bởi vì nó không bắt buộc và có API tệ hơn so với phần còn lại.
Lưu ý rằng nếu bạn có mã mà nên viết ra những điều trên một tập tin, nó tốt hơn để làm:
my_file.write(a)
# ...
my_file.write(b)
# ...
my_file.write(c)
Thần:
print(a, file=my_file)
# ...
print(b, file=my_file)
# ...
print(c, file=my_file)
Bởi vì đó là hơn DRY. Sử dụng print
bạn phải lặp lại file=
mọi lúc. Điều này là tốt nếu bạn phải viết chỉ trong một vị trí của mã, nhưng nếu bạn có 5/6 viết khác nhau thì đơn giản hơn nhiều là chỉ cần gọi trực tiếp phương thức write
.
Bạn có muốn sử dụng nó để đăng nhập không? Sau đó, tôi sẽ đề nghị các mô-đun đăng nhập: https://docs.python.org/3/library/logging.html – RvdK
Tôi nghĩ rằng 'in' là cách rõ ràng duy nhất (nói rằng bạn không biết python và bạn đến từ perl , bạn có thể thử gì?). Điều này cũng có thể nói cho các phương pháp ma thuật. –
@NoctisSkytower chính xác, bạn cũng nên liệt kê 'in' một số văn bản "'. Lưu ý các dấu ngoặc còn thiếu. – RvdK