Tôi tò mò về hình thức nào hiệu quả hơn, đúng kiểu, v.v. Tôi cảm thấy cách tiếp cận ".0" nhanh hơn nhiều; Tôi không chắc tại sao phương pháp "phao" được đánh giá cao như nhau (nếu có).Có ít tốn kém tính toán để sử dụng 7.0 hoặc float (7) bằng Python không?
Trả lời
Sử dụng float(7)
thêm một số chi phí không cần thiết — Python phải tìm hàm float
trong globals()
và gọi nó. Sử dụng 7.0
thực hiện tất cả các chuyển đổi cần thiết tại thời gian biên dịch thay vì thời gian chạy. Bạn có thể thấy điều này bằng cách sử dụng Python bytecode disassembler.
>>> import dis
>>> def f(): return 7.0
...
>>> def g(): return float(7)
...
>>> dis.dis(f)
1 0 LOAD_CONST 1 (7.0)
3 RETURN_VALUE
>>> dis.dis(g)
1 0 LOAD_GLOBAL 0 (float)
3 LOAD_CONST 1 (7)
6 CALL_FUNCTION 1
9 RETURN_VALUE
7.0 là "tốt hơn", không cần dàn diễn viên nổi, nó sẽ tự động thực hiện.
float() được lưu tốt nhất để truyền không nổi lên phao.
Chữ nổi có thể được viết là 7.0
, điều đó là tốt vì chúng tự động thuộc loại float
.
Nếu bạn có ý định chuyển đổi một số nguyên hoặc chuỗi thành float thì hàm float()
là phù hợp nhưng hàm đó không cần phải được gọi để viết một chữ phao.
sử dụng cách tiếp cận 7.0
, cách tiếp cận float(7)
được sử dụng để chuyển đổi số nguyên hoặc chuỗi loại để nổi vì vậy việc sử dụng khác nhau, ví dụ:
a = 7
b = "7"
print float(a)
7.0
print float(b)
7.0
Ah tôi thấy việc sử dụng nó bây giờ. Cảm ơn bạn! – piperchester
không có vấn đề gì và chào mừng bạn đến với SO :) – Hassek
'float()' cũng phải gánh chịu một số chi phí. –
Sử dụng float(0)
nhiều rõ ràng hơn khi đọc lại code của bạn vào một ngày sau đó, gây nhầm lẫn ít hơn sau này nếu bạn vô tình thả ".0
".
Làm thế nào chính xác một người vô tình thả nó? –
@MichaelHoffman Giả sử bạn có 'this_should_be_a_float = 7.0/mẫu số', trong đó mẫu số là int. Suy nghĩ của tôi là để bảo trì trong tương lai, có thể có một cách rất rõ ràng để chỉ ra rằng '7.0' cần thiết là một phao để không có vấn đề làm tròn trong trường hợp ai đó sau đó thay đổi 7.0 thành một hằng số khác, như vậy là 6 và quên thêm ".0". – CraigTeegarden
Bạn nên sử dụng 'từ __future__ bộ phận nhập khẩu' nếu bạn chưa có. Sau đó, điều này sẽ không là một vấn đề. –
Sau đây là tất cả tương đương bằng Python:
>>> 7. == 7.0 == float(7) == float("7")
True
tôi sẽ tránh sử dụng float(7)
hoặc float("7")
khi bạn đang cứng mã hóa giá trị, như thông dịch Python trước tiên phải đúc các giá trị cho một số nguyên hoặc một chuỗi, và sau đó chuyển nó thành dấu phẩy động.
Để tránh phí trên đó, hãy sử dụng 7.
hoặc 7.0
để cung cấp cho Python một chữ nổi.
Tất nhiên, float()
vẫn nên được sử dụng để chuyển đổi các loại dữ liệu khác thành phao.
7.0
sẽ nhanh hơn. float(7)
tạo số nguyên, sau đó gọi hàm float()
để chuyển đổi số nguyên thành số float, do đó, gọi float(7)
hàm ý phí gọi hàm cũng như bất kỳ lỗi nào khi kiểm tra chức năng float()
có thể làm. Đối với hầu hết các mục đích thực tế, sự khác biệt về tốc độ có thể không quan trọng nhiều (trừ khi bạn đang ở trong một vòng sâu nơi mã của bạn đang được gọi là hàng trăm triệu lần), nhưng có điều gì đó không thích hợp về việc gọi một chức năng chuyển đổi khi trình thông dịch có cú pháp dựng sẵn để xây dựng phao.
Sử dụng float()
khi bạn có thứ gì đó không phải là phao (như chuỗi hoặc số nguyên) mà bạn muốn chuyển đổi.
- 1. Điều gì khiến Erlang không phù hợp với công việc tốn kém về tính toán?
- 2. Tính toán Nth float
- 3. Có tốn kém trong Python để đưa các lớp vào các tệp khác nhau không?
- 4. Có tốn kém khi tính toán kích thước vectơ cho các vòng lặp, mỗi lần lặp không?
- 5. Phương pháp ít tốn kém nhất để có được một số hàng cho một truy vấn SQL là gì?
- 6. Chuỗi nối trong scala có tốn kém như trong Java không?
- 7. Intel Xeon Phi có thể sử dụng được nếu không có một trình biên dịch Intel tốn kém không?
- 8. Tính toán mật độ điểm bằng cách sử dụng Python
- 9. những gì là tốn kém hơn cho bộ nhớ. "tạo và xóa đối tượng" hoặc "sử dụng lại đối tượng"?
- 10. Đang trả lại hàng tiêu chuẩn :: danh sách tốn kém?
- 11. ít hoặc less_equal bằng cách sử dụng thiết lập
- 12. Làm thế nào tốn kém là 'mở rộng' trong ruby?
- 13. File_exist() trong PHP là một hoạt động rất tốn kém?
- 14. Tùy chọn tốt cho nhà phát triển Java, những người cần Web Hosting không tốn kém
- 15. Việc triển khai các ứng dụng web Java có tốn kém hơn các ứng dụng web PHP khác không?
- 16. Hoạt động tốn kém của SQLite cursor.getCount trong Android
- 17. Tại sao DateTime.Now DateTime.UtcBây giờ quá chậm/tốn kém
- 18. Tại sao tính năng tự động phát lại đặc biệt nguy hiểm/tốn kém cho các ứng dụng iPhone?
- 19. OpenCV PCA Tính toán bằng Python
- 20. Tốc độ tính toán (bằng python)
- 21. Python không bằng toán tử
- 22. so sánh giá trị float/double bằng cách sử dụng toán tử ==
- 23. Từ điển Python tốn bao nhiêu để xử lý?
- 24. scala không cảnh báo về tính toán không sử dụng hoặc giá trị
- 25. Chuyển đổi hình ảnh mảng float thành định dạng có thể sử dụng cho opencv
- 26. Tính toán logarit với máy tính Windows 7
- 27. đang gọi libgdx SpriteBatch bắt đầu và kết thúc phương thức nhiều lần tốn kém?
- 28. Quản lý bộ nhớ/bộ nhớ đệm cho các đối tượng tốn kém trong C#
- 29. Làm thế nào để sử dụng SQLiteOpenHelper mà không có hoặc ít hạn chế sử dụng Bối cảnh?
- 30. Tính toán sử dụng CPU
Chấp nhận câu trả lời bên dưới nếu bạn thấy câu trả lời hữu ích. –