Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Python

default variable in python $_

 

 

Python python RSS feed   Index | Next | Previous | View Threaded


steven.klass at gmail

Oct 10, 2006, 3:23 PM

Post #1 of 5 (119 views)
Permalink
default variable in python $_

Hi all,

So I have this simple little routine.. say like this..


def foo()
return {"a":"b", "b":"c"}

if foo():
print "Have foo"


Now I want the dictionary item a (ie. b)

How can I do it the above way or do I still have to go like this..

def foo()
return {"a":"b", "b":"c"}

z = foo()
if z:
print "Have foo"
print z['a']

This is where $_ in perl is awesome - There must be a default variable
in python right?

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


g.brandl-nospam at gmx

Oct 10, 2006, 3:26 PM

Post #2 of 5 (117 views)
Permalink
Re: default variable in python $_ [In reply to]

rh0dium wrote:
> Hi all,
>
> So I have this simple little routine.. say like this..
>
>
> def foo()
> return {"a":"b", "b":"c"}
>
> if foo():
> print "Have foo"
>
>
> Now I want the dictionary item a (ie. b)
>
> How can I do it the above way or do I still have to go like this..
>
> def foo()
> return {"a":"b", "b":"c"}
>
> z = foo()
> if z:
> print "Have foo"
> print z['a']
>
> This is where $_ in perl is awesome - There must be a default variable
> in python right?

Why should there? When you're learning a new language, the first thing you
should do is to empty your mind and stop expecting concepts known from other
languages. Instead, try to grasp what the essence of the new language is.

In the case of Python, one credo is "explicit is better than implicit".
IMO, this precludes, among other things, the notion of a "default variable".

Where is the problem with your second snippet?

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


bearophileHUGS at lycos

Oct 10, 2006, 4:38 PM

Post #3 of 5 (121 views)
Permalink
Re: default variable in python $_ [In reply to]

rh0dium:
> This is where $_ in perl is awesome - There must be a default variable
> in python right?

A default variable may add bugs to your code, and newbies of the
language may see it coming from air, so Python avoids such things. The
only Python "default variable" I know of is the _ that when used in the
Python shell, it (seem to) stores the last not-None result (inside
scripts it is a normal name sometimes used to 'ignore' some values):

>>> a = 1
>>> _
Traceback (most recent call last):
...
NameError: name '_' is not defined
>>> print 2
2
>>> _
Traceback (most recent call last):
...
NameError: name '_' is not defined
>>> 5 / 3
1
>>> _
1
>>> None
>>> _
1
>>> 2
2
>>> _
2

Bye,
bearophile

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


Maria.Reinhammar at accalon

Oct 11, 2006, 12:48 AM

Post #4 of 5 (119 views)
Permalink
Re: default variable in python $_ [In reply to]

rh0dium wrote:
> Hi all,
>
> So I have this simple little routine.. say like this..
>
>
> def foo()
> return {"a":"b", "b":"c"}
>
> if foo():
> print "Have foo"
>
>
> Now I want the dictionary item a (ie. b)
>
> How can I do it the above way or do I still have to go like this..
>
> def foo()
> return {"a":"b", "b":"c"}
>
> z = foo()
> if z:
> print "Have foo"
> print z['a']
>
> This is where $_ in perl is awesome - There must be a default variable
> in python right?

As said in earlier response, such a default variable is *dangerous* at
best!
Not knowing much about Perl and guessing that the $_ is a global
storage space, my immediate thought is; What happens if you have
multiple threads?

The example is too simplified to give any clues as to what you are
needing the feature for.
Guessing that you want to generate some dict() and use the result once
and then discard, write:

foo_default = 1
def foo(): return(generate_some_dict())

you can further write

foo().get('a', foo_default)

giving compact code and ensuring that you get a well defined result
regardless what dictionary keys there are.

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


steven.klass at gmail

Oct 11, 2006, 7:59 AM

Post #5 of 5 (111 views)
Permalink
Re: default variable in python $_ [In reply to]

Hi Maria,

This is exactly what I was looking for. I (as others have asked me to)
cleared my head of the other languages, but was mearly giving perl as
an example indicating the compactness I was after.

Thanks Maria!!

MaR wrote:
> rh0dium wrote:
> > Hi all,
> >
> > So I have this simple little routine.. say like this..
> >
> >
> > def foo()
> > return {"a":"b", "b":"c"}
> >
> > if foo():
> > print "Have foo"
> >
> >
> > Now I want the dictionary item a (ie. b)
> >
> > How can I do it the above way or do I still have to go like this..
> >
> > def foo()
> > return {"a":"b", "b":"c"}
> >
> > z = foo()
> > if z:
> > print "Have foo"
> > print z['a']
> >
> > This is where $_ in perl is awesome - There must be a default variable
> > in python right?
>
> As said in earlier response, such a default variable is *dangerous* at
> best!
> Not knowing much about Perl and guessing that the $_ is a global
> storage space, my immediate thought is; What happens if you have
> multiple threads?
>
> The example is too simplified to give any clues as to what you are
> needing the feature for.
> Guessing that you want to generate some dict() and use the result once
> and then discard, write:
>
> foo_default = 1
> def foo(): return(generate_some_dict())
>
> you can further write
>
> foo().get('a', foo_default)
>
> giving compact code and ensuring that you get a well defined result
> regardless what dictionary keys there are.

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

Python python RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.