By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,957 Members | 1,960 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,957 IT Pros & Developers. It's quick & easy.

default variable in python $_

P: n/a
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?

Oct 10 '06 #1
Share this Question
Share on Google+
4 Replies


P: n/a
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
Oct 10 '06 #2

P: n/a
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

Oct 10 '06 #3

P: n/a
MaR

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.

Oct 11 '06 #4

P: n/a
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.
Oct 11 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.