PEP308: Yet another syntax proposal

Andrew Dalke adalke at mindspring.com
Mon Feb 10 13:43:08 EST 2003


Raymond Hettinger
> > #  Example where all three reasons apply
> > data = isinstance(source, str)  ??   source.readlines()  ||
> source.split()
>
> That should have been:
>           isinstance(source, file)

Err, that should have been

    if hasattr(source, "readlines"):
      lines = source.readlines()
    else:
      lines = source.split()

Or perhaps better as
    try:
        lines = source.readlines()
    except AttributeError;
        lines = source.split()

Or for cases where you strongly prefer a file but will accept
a raw string (which you shouldn't do since StringIO is so easy
to get)

  if isinstance(source, basestring):
    source = StringIO(source)
  ...

and then you can change the alorithm to use read, readlines,
etc. as need be.

                    Andrew
                    dalke at dalkescientific.com







More information about the Python-list mailing list