W dokumentacji Pythona i na listach dyskusyjnych widzę, że wartości są czasami "rzucane", a czasami "wymuszane". Jaka jest różnica?Casting vs. przymus w Pythonie
Odpowiedz
Uważam, że "rzucanie" nie powinno być używane w Pythonie; istnieje tylko konwersja typu, ale nie ma rzutów (w sensie C). Konwersja typu jest wykonywana np. poprzez , gdzie obiekt o jest przekształcany na liczbę całkowitą (w rzeczywistości obiekt liczby całkowitej jest zbudowany z o). W przypadku operacji binarnych występuje przymus: jeśli robisz x+y
, a x i y mają różne typy, są one wymuszane na jeden typ przed wykonaniem operacji. W wersji 2.x specjalna metoda pozwala obiektowi kontrolować ich przymus.
Przesyłanie jest jawne. Coerce jest niejawne.
Przykłady w Pythonie byłoby:
cast(2, POINTER(c_float)) #cast
1.0 + 2 #coerce
1.0 + float(2) #conversion
Obsada naprawdę sprowadza się tylko w C FFI. To, co jest zwykle nazywane rzutowaniem w języku C lub Java, nazywane jest konwersją w pythonie, choć często jest określane jako rzutowanie z powodu podobieństwa do innych języków. W prawie każdym języku, w którym mam doświadczenie (w tym python) Coercion jest niejawna zmiana typu.
- 1. Casting do ENUM vs Enum.ToObject
- 2. Zrozumienie PHP Rodzaj Przymus
- 3. Lazy Atrybut Przymus
- 4. Casting in visual basic?
- 5. Casting struct into int
- 6. Casting "z" Interfejs
- 7. Casting stałe do unii
- 8. Casting DBNull na boolean
- 9. ViewModelBuilder generics casting issue
- 10. Casting wyraz na inny
- 11. Jak działa casting?
- 12. "NAs wprowadzone przez przymus" podczas analizy klastra w R
- 13. jak uniknąć "Komunikat ostrzegawczy: NAs wprowadzone przez przymus" w as.numeric()
- 14. Wskaźnik funkcji Casting do Integer w C++
- 15. WPF Oprawa: Casting w wiązaniu ścieżkę
- 16. Casting String jako DateTime w LINQ
- 17. Casting między typami danych w języku C#
- 18. Casting null Int i dwukrotnie w Scala
- 19. Casting Błąd: Umieszczanie danych w Custom MembershipUser
- 20. Casting CGFloat się unosić w Swift
- 21. Casting w Java (interfejs i klasa)
- 22. C# Casting to a decimal
- 23. WPF Casting in Binding Path
- 24. Casting generycznych i generycznych typ
- 25. Java: Casting klasę niepowiązanych interfejsu
- 26. Int to Double Casting Problem
- 27. Java Casting z metodą zwraca
- 28. C# Casting do MemoryStream FileStream
- 29. zakończeń linii w Pythonie
- 30. Orange vs NLTK dla klasyfikacji treści w Pythonie
-1. To jest nomenklatura C++; Python używa innej terminologii. – SamB
+1: Dla tego pytania przykład jest całkowicie poprawny. Jest wyraźnie oznaczony jako C++. – user183037
Pytanie dotyczy pojęcia "obsada" w kontekście języka Python. Odpowiedź, która wyjaśnia, że 'float (1)' jest konstrukcją, a nie rzutowaniem, jest lepsza. –