हालांकि सीधे ओपी सवाल का जवाब नहीं है, लेकिन यह पता लगाने का एक बहुत ही प्यारा तरीका है कि एक फ़ंक्शन में चर क्या गुंजाइश हैं। इस कोड पर एक नज़र डालें:
>>> def f(x, y):
z = x**2 + y**2
sqrt_z = z**.5
return sqrt_z
>>> f.func_code.co_varnames
('x', 'y', 'z', 'sqrt_z')
>>>
Func_code विशेषता में सभी प्रकार की दिलचस्प चीजें हैं। यह आपको कुछ शांत सामानों से बाहर निकलने की अनुमति देता है। यहाँ एक उदाहरण है कि मैंने इसका उपयोग कैसे किया है:
def exec_command(self, cmd, msg, sig):
def message(msg):
a = self.link.process(self.link.recieved_message(msg))
self.exec_command(*a)
def error(msg):
self.printer.printInfo(msg)
def set_usrlist(msg):
self.client.connected_users = msg
def chatmessage(msg):
self.printer.printInfo(msg)
if not locals().has_key(cmd): return
cmd = locals()[cmd]
try:
if 'sig' in cmd.func_code.co_varnames and \
'msg' in cmd.func_code.co_varnames:
cmd(msg, sig)
elif 'msg' in cmd.func_code.co_varnames:
cmd(msg)
else:
cmd()
except Exception, e:
print '\n-----------ERROR-----------'
print 'error: ', e
print 'Error proccessing: ', cmd.__name__
print 'Message: ', msg
print 'Sig: ', sig
print '-----------ERROR-----------\n'