Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Very simple request about argument setting.

Reply
Thread Tools

Very simple request about argument setting.

 
 
Hakusa@gmail.com
Guest
Posts: n/a
 
      10-30-2006
I have the argument items in my class room.

class room:
def __init__(self, name, description, items*):

I thought I remembered from a tutorial I read once, and I've read so
many I feel like an expert of them, that putting a little star* above
an item makes it accept the argument as a list. But when I tried this,
I got an invalid syntax error message.

So:
Question 1: How can I create an argument that accepts a list of
variable?

Question 2: How do I signify to accept each item as one list? (my bet's
on using another set of parens)

Question 3: Or am I going about this all wrong and should always create
a list before the fuction call and use the list in the function call?

 
Reply With Quote
 
 
 
 
ArdPy
Guest
Posts: n/a
 
      10-30-2006

wrote:
> I have the argument items in my class room.
>
> class room:
> def __init__(self, name, description, items*):
>
> I thought I remembered from a tutorial I read once, and I've read so
> many I feel like an expert of them, that putting a little star* above
> an item makes it accept the argument as a list. But when I tried this,
> I got an invalid syntax error message.
>

There is an error in the syntax the star must prefix the variable name
not suffix it.
Then the items variable will accept the parameter value as a tuple.
> So:
> Question 1: How can I create an argument that accepts a list of
> variable?

It is not clear whether you want to accept a list variable or an
arbitrary number of values as parameter
to the function. So I will explain each case.
def ex(name,*items):
Here name, description and items can all accept lists as arguments.
Additionally items can accept arbitrary
number of arguments even of different types.
Ex:
ex([10,12],12,13.3,'Python')
>
> Question 2: How do I signify to accept each item as one list? (my bet's
> on using another set of parens)

I have answered this already.
>
> Question 3: Or am I going about this all wrong and should always create
> a list before the fuction call and use the list in the function call?

No need u can pass a list directly into the call.

 
Reply With Quote
 
 
 
 
Hakusa@gmail.com
Guest
Posts: n/a
 
      10-30-2006

ArdPy wrote:
> There is an error in the syntax the star must prefix the variable name
> not suffix it.
> Then the items variable will accept the parameter value as a tuple.


Hmm, tuples are immutable, right? I need something mutable so that when
the player picks up an item, it's no longer in the room.

Besides which, I've been playing with this whole thing in the
interactive interpreter:

>>> def shuf(x,*foo, **bar):

.... return x, foo
....
>>> x,foo,bar = shuf(1,2,3,4,5,6,7,

Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
ValueError: need more than 2 values to unpack

I remember that two stars is for the second tuple, but how do I
distinguish between what var is for which tuple? I've tried using
brackets, braces, prenthisies, nothing seems to work. So what I am
doing wrong?

 
Reply With Quote
 
ArdPy
Guest
Posts: n/a
 
      10-30-2006

wrote:
> ArdPy wrote:
> > There is an error in the syntax the star must prefix the variable name
> > not suffix it.
> > Then the items variable will accept the parameter value as a tuple.

>
> Hmm, tuples are immutable, right? I need something mutable so that when
> the player picks up an item, it's no longer in the room.
>
> Besides which, I've been playing with this whole thing in the
> interactive interpreter:
>
> >>> def shuf(x,*foo, **bar):

> ... return x, foo
> ...
> >>> x,foo,bar = shuf(1,2,3,4,5,6,7,

> Traceback (most recent call last):
> File "<interactive input>", line 1, in <module>
> ValueError: need more than 2 values to unpack
>
> I remember that two stars is for the second tuple, but how do I
> distinguish between what var is for which tuple? I've tried using
> brackets, braces, prenthisies, nothing seems to work. So what I am
> doing wrong?

The thing is that the parameter 'bar' is actually a dictionary object
so the right way of calling shuf is then
x,foo,bar = shuf(1,2,3,4,5,a=6,b=7,c=

 
Reply With Quote
 
Hakusa@gmail.com
Guest
Posts: n/a
 
      10-30-2006
Thank you very much for your information.

 
Reply With Quote
 
Fredrik Lundh
Guest
Posts: n/a
 
      10-30-2006
wrote:

> ArdPy wrote:
>> There is an error in the syntax the star must prefix the variable name
>> not suffix it.
>> Then the items variable will accept the parameter value as a tuple.

>
> Hmm, tuples are immutable, right? I need something mutable so that when
> the player picks up an item, it's no longer in the room.


the *args syntax is used to capture extra positional arguments, so you
can deal with them later. consider the following code:

def func(*args):
args.append(4)

func(1, 2, 3)

where do you expect the "4" to go?

if you want to *store* the items in an *instance* variable, you can
trivially convert it to a list by passing it to the list() function:

class Room:
def __init__(self, name, *items):
self.name = name
self.items = list(items)

r = Room("hall", "old shoe", "kitten", "vegetables")
r.items.append("a wallclock round in metal")

> Besides which, I've been playing with this whole thing in the
> interactive interpreter:
>
>>>> def shuf(x,*foo, **bar):

> ... return x, foo
> ...
>>>> x,foo,bar = shuf(1,2,3,4,5,6,7,

> Traceback (most recent call last):
> File "<interactive input>", line 1, in <module>
> ValueError: need more than 2 values to unpack


if you compare the return statement inside the function with the
assignment, do you see any notable differences?

> I remember that two stars is for the second tuple


if you're an expert on tutorials, surely you should be able to find one
and look this up in no time at all?

(the **bar syntax captures extra *keyword* arguments)

> So what I am doing wrong?


programming by trial and error?

</F>

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Help running a very very very simple code olivier.melcher Java 8 05-12-2008 07:51 PM
very very very long integer shanx__=|;- C Programming 19 10-19-2004 03:55 PM
very very very long integer Abhishek Jha C Programming 4 10-17-2004 08:19 AM
Quick Book file access very very very slow Thomas Reed Computer Support 7 04-09-2004 08:09 PM
very Very VERY dumb Question About The new Set( ) 's Raymond Arthur St. Marie II of III Python 4 07-27-2003 12:09 AM



Advertisments