Is there a way to dynamically find out how many arguments a function
requires? I thought this would be listed somewhere with dir() but I
can't find anything. Any help is appreciated. 4 2770
Check the standard module inspect, particularly; import inspect import cgi inspect.getargspec( cgi.escape )
(['s', 'quote'], None, None, (None,))
HTH,
Mike
Chris S. wrote:
Is there a way to dynamically find out how many arguments a function requires? I thought this would be listed somewhere with dir() but I can't find anything. Any help is appreciated.
________________________________________________
Mike C. Fletcher
Designer, VR Plumber, Coder http://members.rogers.com/mcfletch/
blog: http://zope.vex.net/~mcfletch/plumbing/
Thanks for the help.
Mike C. Fletcher wrote: Check the standard module inspect, particularly;
>>> import inspect >>> import cgi >>> inspect.getargspec( cgi.escape )
(['s', 'quote'], None, None, (None,))
HTH, Mike
Chris S. wrote:
Is there a way to dynamically find out how many arguments a function requires? I thought this would be listed somewhere with dir() but I can't find anything. Any help is appreciated.
________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://members.rogers.com/mcfletch/ blog: http://zope.vex.net/~mcfletch/plumbing/
Hello Mike, Check the standard module inspect, particularly;
import inspect import cgi inspect.getargspec( cgi.escape )
(['s', 'quote'], None, None, (None,))
or just cgi.escape.func_code.co_varnames
Bye.
--
-------------------------------------------------------------------------
Miki Tebeka <mi*********@zoran.com>
The only difference between children and adults is the price of the toys.
"Mike C. Fletcher" <mc******@rogers.com> wrote in message news:<ma*************************************@pyth on.org>... Check the standard module inspect, particularly;
>>> import inspect >>> import cgi >>> inspect.getargspec( cgi.escape ) (['s', 'quote'], None, None, (None,))
Also:
cgi.escape.func_code.co_argcount
Should yield:
2
Lots of func stuff should be visible when dir() is used. You just
need to work out what is where. dir(cgi.escape)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__',
'__get__', '__getattribute__', '__hash__', '__init__', '__module__',
'__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__str__', 'func_closure', 'func_code',
'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
dir(cgi.escape.func_code)
['__class__', '__cmp__', '__delattr__', '__doc__', '__getattribute__',
'__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__str__', 'co_argcount', 'co_cellvars',
'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags',
'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals',
'co_stacksize', 'co_varnames']
Similar thing for class methods and callable objects if you know where
to look.
dir(A.__init__.im_func)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__',
'__get__', '__getattribute__', '__hash__', '__init__', '__module__',
'__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__str__', 'func_closure', 'func_code',
'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
dir(A(1).__call__.im_func)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__',
'__get__', '__getattribute__', '__hash__', '__init__', '__module__',
'__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__str__', 'func_closure', 'func_code',
'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
Obviously, the "inspect" module is mean't to hide to a degree all this
stuff, but still sometimes easier to access it directly. This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Michael |
last post by:
In the book 'Text Processing Python,' they present a function that I'm
having a real hard time understanding.
apply_each = lambda fns, args=: map(apply, fns, *len(fns))
I understand that the...
|
by: yaipa |
last post by:
What would be the common sense way of finding a binary pattern in a
..bin file, say some 200 bytes, and replacing it with an updated pattern
of the same length at the same offset?
Also, the...
|
by: Fredrik Tolf |
last post by:
If I have a variable which points to a function, can I check if certain
argument list matches what the function wants before or when calling it?
Currently, I'm trying to catch a TypeError when...
|
by: lcaamano |
last post by:
We have a tracing decorator that automatically logs enter/exits to/from
functions and methods and it also figures out by itself the function
call arguments values and the class or module the...
|
by: Eric Brunel |
last post by:
Hi all,
I just stepped on a thing that I can't explain. Here is some code showing
the problem:
-----------------------------
class C:
f = None
def __init__(self):
if self.f is not None:
|
by: 63q2o4i02 |
last post by:
Hi,
I'm writing a hand-written recursive decent parser for SPICE syntax
parsing. In one case I have one function that handles a bunch of
similar cases (you pass the name and the number of...
|
by: Michael |
last post by:
Hi,
I'm having difficulty finding any previous discussion on this -- I
keep finding people either having problems calling os.exec(lepev), or
with using python's exec statement. Neither of...
|
by: Beta What |
last post by:
Hello,
I have a question about casting a function pointer. Say I want to make
a generic module (say some ADT implementation) that requires a function
pointer from the 'actual/other modules'...
|
by: rh0dium |
last post by:
Hi all,
Below is a basic threading program. The basic I idea is that I have a
function which needs to be run using a queue of data. Early on I
specified my function needed to only accept basic...
|
by: Andrew West |
last post by:
Probably a bit of weird question. I realise decorators shouldn't be
executed until the function they are defined with are called, but is
there anyway for me to find all the decorates declared in a...
|
by: DolphinDB |
last post by:
Tired of spending countless mintues downsampling your data? Look no further!
In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: ArrayDB |
last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
|
by: PapaRatzi |
last post by:
Hello,
I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
|
by: CloudSolutions |
last post by:
Introduction:
For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
|
by: Defcon1945 |
last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
|
by: af34tf |
last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
|
by: Faith0G |
last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
| |