Static Typing in Python
Jacek Generowicz
jacek.generowicz at cern.ch
Mon Mar 15 07:22:47 EST 2004
Premshree Pillai <premshree_python at yahoo.co.in> writes:
> Err...you probably have the wrong idea of static typing, I think.
Maybe you should check your facts a bit more, before making such bold
statements :-)
> Static typing has to do with explicit declaration (initialization)
> of variables (and not of variable types).
Does it really ?
I suggest you go to an ML or Haskell newsgroup and make that
claim. Come back and report your experience.
(Hint: They are both statically typed languages, and you won't find
many explicit declarations in them.)
(Hint 2: the word "typing" in "static typing" does *not* refer to
pressing keys with your fingers, it refers to the types of objects in
a computer program. See Dang Griffiths' repartee in
<33bd6435fb366a01954fafca8a8f34e3 at news.teranews.com>)
> Python [...] variables are necessarily bound to a particular type.
Are they really ?
>>> a = 3
>>> type(a)
<type 'int'>
>>> a = ''
>>> type(a)
<type 'str'>
Variables in Python are NOT bound to types[*].
Python variables are bound to objects. Those objects "know" their own
type. So there is an *indirect* association between a variable and a
type. In that sense your statement is correct. There is, however, no
fixed relationship between a variable and a type (which is what
"static" in "static typing" actually means).
> So, Python is dynamically typed, and also strongly
> typed
Can't argue with that.
> ...as opposed to statically typed and strongly typed like in C/C++
> (casting notwithstanding).
Acutally, C and C++ are pretty weakly typed (but do bear in mind that
"strongly typed" and "weakly typed" are not well-defined concepts
anyway), even without casting.
[*] Well, they could be bound to types, because Python types are also
objects:
a = int
b = dict
c = MyClass
More information about the Python-list
mailing list