2012-07-13 27 views

Trả lời

9

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   
0

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.

1

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.

9

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 
+0

Ah tôi thấy việc sử dụng nó bây giờ. Cảm ơn bạn! – piperchester

+1

không có vấn đề gì và chào mừng bạn đến với SO :) – Hassek

+1

'float()' cũng phải gánh chịu một số chi phí. –

0

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".

+0

Làm thế nào chính xác một người vô tình thả nó? –

+0

@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

+0

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 đề. –

6

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.

0

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.

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