On 2018-02-18 15:44, Michael Torrie wrote:
On 02/18/2018 05:45 AM, Anders Wegge Keller wrote:
På Sun, 18 Feb 2018 07:34:03 -0500
Richard Damon <rich...@damon-family.org> skrev:

Python is much stronger typed than PHP, because in PHP you can do things like 1 + '2' and get 3, as string values will naturally convert themselves to numbers, Python won't do this. Yes Python will freely convert between numeric types, but I wouldn't say that Python claims to be a language that focuses on numerics.

 Type coercion is not the same as weak typing. Let me stress that the
difference between languages having 1 + 1.23 as a valid construct and
languages having 1 + '1.23' as a valid construct, is merely a design
descision. PHP is fully aware that a string and an integer have different
types, and makes a implicit cast, rather than throw an error.

And indeed language design decisions bring about weak or strong typing.
So it's not a stretch at all to say Python has strongly typed objects.
It does. Once created, objects are what they are; they cannot be changed
into different objects without creating a new object.

As for numeric coercion, Python could have made numeric types stronger
and dropped all coercion. Maybe it should have.  But it appears to
generally follow the same coercion patters as other commonly-used static
type languages like C.  In this we can agree that Python's typing was
weakened, but so also is C.

Some languages, such as Pascal, allow "widening", where an integer can be coerced to a real (float), but not the other way round.

C _does_ let you coerce a double to a float (rounding) and both to an int (truncating).

It's interesting to see C++ move to become more like a dynamically-typed
language like Python.  I recently saw a talk about how C++ inheritance
is not as good as we all thought it was.  Why should it matter what an
object inherits from, if it supports the interface we desire? (Duck
typing, essentially).  So there's now a rather complicated C++17 idiom
for wrapping objects with special interfaces so that we can make a list
that contains different types (just like python!) that happen to all
support the same method signature.  Anyway, was interesting.

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to