def do_arguments(self, node):
'''Format the arguments node.'''
kind = self.kind(node)
assert kind == 'arguments', kind
args = [self.visit(z) for z in node.args]
defaults = [self.visit(z) for z in node.defaults]
# Assign default values to the last args.
args2 = []
n_plain = len(args) - len(defaults)
for i in range(len(args)):
if i < n_plain:
args2.append(args[i])
else:
args2.append('%s=%s' % (args[i], defaults[i - n_plain]))
if isPython3:
args = [self.visit(z) for z in node.kwonlyargs]
defaults = [self.visit(z) for z in node.kw_defaults]
n_plain = len(args) - len(defaults)
for i in range(len(args)):
if i < n_plain:
args2.append(args[i])
else:
args2.append('%s=%s' % (args[i], defaults[i - n_plain]))
# Add the vararg and kwarg expressions.
vararg = getattr(node, 'vararg', None)
if vararg: args2.append('*' + self.visit(vararg))
kwarg = getattr(node, 'kwarg', None)
if kwarg: args2.append('**' + self.visit(kwarg))
else:
# Add the vararg and kwarg names.
name = getattr(node, 'vararg', None)
if name: args2.append('*' + name)
name = getattr(node, 'kwarg', None)
if name: args2.append('**' + name)
return ','.join(args2)
# 3: arg = (identifier arg, expr? annotation)
评论列表
文章目录