View Single Post
Old 02-05-2007, 10:19 AM   PM User | #2
Kakao
Regular Coder

 
Join Date: Mar 2006
Location: Brasília, Brazil
Posts: 153
Thanks: 0
Thanked 0 Times in 0 Posts
Kakao is on a distinguished road
Quote:
Originally Posted by chipwhisperer View Post
1) I see in code that people will define subclasses like this:

def __init__(self, **config):
server = config.get('server', 'dnd')

what does the ** mean? I've also seen it as one asterisk. Or is that different?
A parameter starting with ** means the function/method accepts named parameters that will be available as a dictionary:
Code:
>>> def f(**keywords):
...    for key in keywords:
...       print key, keywords[key]
...
>>> f(var1=1, var2=3)
var1 1
var2 3
When the parameter starts with a single * it means positional arguments are accepted:
Code:
>>> def f(*a_tuple):
...    for item in a_tuple:
...       print item
...
>>> f(1,7,'car')
1
7
car
Quote:
Originally Posted by chipwhisperer View Post
2) i have also seen people define methods of classes with one underscore in front of the name and this is somehow special. why?
It is a warning to other programmers that it is a private method and should not be used directly. It is not enforced by the interpreter.
Kakao is offline   Reply With Quote