Re: Python 2.4 removes None data type?

2005-03-09 Thread Jacek Generowicz
Warren Postma [EMAIL PROTECTED] writes:

 [EMAIL PROTECTED] wrote:
 
  I just read in the 'What's New in Python 2.4' document that the None
  data type was converted to a constant:
  http://python.org/doc/2.4/whatsnew/node15.html
 
 Implication: A long standing wart in Python now gone.  Its time to
 gloat. Are there any really evil glitches LEFT in Python?

Python 2.4 (#1, Dec  1 2004, 14:23:15) 
[GCC 3.2.3] on linux2
Type help, copyright, credits or license for more information.
 True, False = False, True
 True
False
 

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


Re: Python 2.4 removes None data type?

2005-03-09 Thread Jarek Zgoda
Jacek Generowicz napisa(a):
Implication: A long standing wart in Python now gone.  Its time to
gloat. Are there any really evil glitches LEFT in Python?
Python 2.4 (#1, Dec  1 2004, 14:23:15) 
[GCC 3.2.3] on linux2
Type help, copyright, credits or license for more information.

True, False = False, True
True
False
Ugh, today I've found this in some legacy code (yes, there *is* legacy 
code in Python). And I will not touch this module until such syntax 
become illegal.

--
Jarek Zgoda
http://jpa.berlios.de/ | http://www.zgodowie.org/
--
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2.4 removes None data type?

2005-03-07 Thread Warren Postma
Michael Hoffman wrote:
The fact that True and False are not constants?
Yowza.
a = True
b = False
False = a
True = b
if (1==2)==True:
print Doom
--
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2.4 removes None data type?

2005-03-07 Thread Warren Postma
Michael Hoffman wrote:
The fact that True and False are not constants?
Yowza.
a = True
b = False
False = a
True = b
if (1==2)==True:
print Doom
--
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2.4 removes None data type?

2005-03-07 Thread Steven Bethard
Warren Postma wrote:
Michael Hoffman wrote:
The fact that True and False are not constants?
Yowza.
a = True
b = False
False = a
True = b
if (1==2)==True:
print Doom
Why stop there when you can really cause some doom:
py import __builtin__ as bltin
py bltin.True, bltin.False = bltin.False, bltin.True
As an example of what doom this causes, try typing it at the interactive 
prompt, and then see if you can enter anything else.  I can't -- the 
prompt just locks up.  Woo-hoo!  Another way to shoot myself (and my 
users) in the foot! =)

STeVe
--
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2.4 removes None data type?

2005-03-07 Thread Brian van den Broek
Steven Bethard said unto the world upon 2005-03-07 11:55:
Warren Postma wrote:
Michael Hoffman wrote:
The fact that True and False are not constants?

Yowza.
a = True
b = False
False = a
True = b
if (1==2)==True:
print Doom

Why stop there when you can really cause some doom:
py import __builtin__ as bltin
py bltin.True, bltin.False = bltin.False, bltin.True
As an example of what doom this causes, try typing it at the interactive 
prompt, and then see if you can enter anything else.  I can't -- the 
prompt just locks up.  Woo-hoo!  Another way to shoot myself (and my 
users) in the foot! =)

STeVe
Hi all,
just tried this in IDLE:
IDLE 1.1
 import __builtin__ as bltin
 bltin.True, bltin.False = bltin.False, bltin.True
  RESTART 


The restart was done by IDLE itself -- poor thing just gave up. So, it 
looks like Steve has found a `commit suicide' command for an IDLE 
shell :-)

Best to all,
Brian vdB
--
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2.4 removes None data type?

2005-03-07 Thread John Machin

[EMAIL PROTECTED] wrote:
 Sheesh... I didn't actually pull the type(None) comparison out of my
 code.

Sheesh yourself. Newsgroup readers can't do inspect.hasaclue('J. Random
Poster'); they rely on duck-typing or goose-typing.

 I was simply throwing together a possible situation.  Had I
 thought about it for more than a second I would have remembered how I
 would actually use it.

Indeed.

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


Re: Python 2.4 removes None data type?

2005-03-04 Thread Tim Peters
[EMAIL PROTECTED]
 I just read in the 'What's New in Python 2.4' document that the None
 data type was converted to a constant:
 http://python.org/doc/2.4/whatsnew/node15.html

 
 # None is now a constant; code that binds a new value to the name
 None is now a syntax error.
 
 
 So, what's the implications of this?

No implications, for any sane code.  You can no longer do things like this:

 None = 2
SyntaxError: assignment to None

That's all.

 I find the lack of explanation a little puzzling, since I've written code that
 compares a variable's type with the 'None' type.  For example, a variable
 would be initialized to 'None' and if it went through a loop unchanged, I 
 could
 determine this at the end by using a conditional type(var) == type(None).

Python's None is a singleton, meaning that there is a single, unique
instance of type type(None).  So in the case you describe, it's
correct, and idiomatic, to test

 if var is None:

instead.  Checking type(var) against type(None) will still work, but
was never the best way to do it.

If you have an expression like

var = None

that's fine.  You're not changing the binding of name None there,
you're changing the binding of name var.

  What will type(None) return now?

That hasn't changed:

 type(None)
type 'NoneType'
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2.4 removes None data type?

2005-03-04 Thread Gary D. Duzan
In article [EMAIL PROTECTED],
[EMAIL PROTECTED] [EMAIL PROTECTED] wrote:


I just read in the 'What's New in Python 2.4' document that the None
data type was converted to a constant:
http://python.org/doc/2.4/whatsnew/node15.html


# None is now a constant; code that binds a new value to the name
None is now a syntax error.


So, what's the implications of this?  I find the lack of explanation a
little puzzling, since I've written code that compares a variable's
type with the 'None' type.  For example, a variable would be
initialized to 'None' and if it went through a loop unchanged, I could
determine this at the end by using a conditional type(var) ==
type(None).  What will type(None) return now?

   Empirically, NoneType, same as before. The change you refer to is
to prevent the user from doing silly things like:

==
Python 2.3.4 (#1, Feb  8 2005, 13:07:40)
[GCC 3.3.3 (NetBSD nb3 20040520)] on netbsd2
Type help, copyright, credits or license for more information.
 type(None)
type 'NoneType'
 None=fred
stdin:1: SyntaxWarning: assignment to None
 None
'fred'
 type(None)
type 'str'
 
==
Python 2.4 (#1, Mar  4 2005, 16:55:16)
[GCC 3.3.3 (NetBSD nb3 20040520)] on netbsd2
Type help, copyright, credits or license for more information.
 type(None)
type 'NoneType'
 None=Fred
SyntaxError: assignment to None
 type(None)
type 'NoneType'
 
==

   So your idiom should still work. Note that since there is only
one NoneType instance (i.e. None), you can just test for var is None
and save yourself some work.

Gary Duzan
BBN Technologies


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


Re: Python 2.4 removes None data type?

2005-03-04 Thread Steve Holden
Warren Postma wrote:
[EMAIL PROTECTED] wrote:
I just read in the 'What's New in Python 2.4' document that the None
data type was converted to a constant:
http://python.org/doc/2.4/whatsnew/node15.html

Implication: A long standing wart in Python now gone.  Its time to 
gloat. Are there any really evil glitches LEFT in Python? Now go look at 
  Perl and come back and say Thank-deity-of-my-choice-I'm-using-Python.


Remaining warts that won't disappear:
print  file, stuff
@decorator
regards
 Steve
--
Meet the Python developers and your c.l.py favorites March 23-25
Come to PyCon DC 2005  http://www.pycon.org/
Steve Holden   http://www.holdenweb.com/
--
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2.4 removes None data type?

2005-03-04 Thread Roy Smith
In article [EMAIL PROTECTED],
 [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:

 I just read in the 'What's New in Python 2.4' document that the None
 data type was converted to a constant:
 http://python.org/doc/2.4/whatsnew/node15.html
 
 
 # None is now a constant; code that binds a new value to the name
 None is now a syntax error.
 
 
 So, what's the implications of this?  I find the lack of explanation a
 little puzzling, since I've written code that compares a variable's
 type with the 'None' type.  For example, a variable would be
 initialized to 'None' and if it went through a loop unchanged, I could
 determine this at the end by using a conditional type(var) ==
 type(None).  What will type(None) return now?

Just out of curiosity, *why* did you test against type(None).  What did it 
buy you compared to the simpler var == None'?

In any case, it looks like it does the right thing:

Python 2.4 (#1, Jan 17 2005, 14:59:14) 
[GCC 3.3.3 (NetBSD nb3 20040520)] on netbsd2
Type help, copyright, credits or license for more information.
 type (None)
type 'NoneType'
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2.4 removes None data type?

2005-03-04 Thread John Machin

[EMAIL PROTECTED] wrote:
 I just read in the 'What's New in Python 2.4' document that the None
 data type was converted to a constant:
 http://python.org/doc/2.4/whatsnew/node15.html

 
 # None is now a constant; code that binds a new value to the name
 None is now a syntax error.
 

 So, what's the implications of this?

Relax. The sky is not falling.

  I find the lack of explanation a
 little puzzling, since I've written code that compares a variable's
 type with the 'None' type.

It is saying that if you had been silly enough to do

None = fubar

you will now get a syntax error.

It said absolutely nothing about removes None data type.

There are (at least) two possible reasons for a lack of explanation:

(1) Python is one of those expensive software products that hit you
with upgrades where you have difficulty finding about the changes in
advance (let alone participarting in the design process) and require
you to recode large chunks of your application but you can't find out
with any sort of precision the necessary changes might be from the
vague descriptions on a complex and ever-changing website.

(2) Unless you have done something completely idiotic [which the change
is designed to prevent], no change is required to your code. OR, like
for the changes to integer division, the change is announced for a
future version, you can do from __future__ inport whatever. Any
furore (and there have been some doozies) noticeable in the newsgroup
is part of the design process, and has died down well before the
changes are released.

Which do you think is more likely?

  For example, a variable would be
 initialized to 'None' and if it went through a loop unchanged, I
could
 determine this at the end by using a conditional type(var) ==
 type(None).

or by var == None or var is None

 What will type(None) return now?

Constants have types. What made you think that its type would change?

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