utiliza una resultado referencia qué propias procedimientos por paso pasar parametros parametro para metodos metodo lista función funciones consola como python

una - paso de parametros python



¿Se puede pasar un número variable de argumentos a una función? (5)

Añadiendo a desenvolver la publicación:

También puedes enviar múltiples argumentos clave-valor.

def myfunc(**kwargs): # kwargs is a dictionary. for k,v in kwargs.iteritems(): print "%s = %s" % (k, v) myfunc(abc=123, efh=456) # abc = 123 # efh = 456

Y puedes mezclar los dos:

def myfunc2(*args, **kwargs): for a in args: print a for k,v in kwargs.iteritems(): print "%s = %s" % (k, v) myfunc2(1, 2, 3, banan=123) # 1 # 2 # 3 # banan = 123

Deben ser declarados y llamados en ese orden, es decir, la firma de la función debe ser * args, ** kwargs, y debe llamarse en ese orden.

De manera similar al uso de varargs en C o C ++:

fn(a, b) fn(a, b, c, d, ...)


Añadiendo a los otros excelentes posts.

A veces no desea especificar el número de argumentos y desea usar claves para ellos (el compilador se quejará si no se utiliza un argumento pasado en un diccionario en el método).

def manyArgs1(args): print args.a, args.b #note args.c is not used here def manyArgs2(args): print args.c #note args.b and .c are not used here class Args: pass args = Args() args.a = 1 args.b = 2 args.c = 3 manyArgs1(args) #outputs 1 2 manyArgs2(args) #outputs 3

Entonces puedes hacer cosas como

myfuns = [manyArgs1, manyArgs2] for fun in myfuns: fun(args)


Sí.

Esto es simple y funciona si no tiene en cuenta los argumentos de palabras clave:

def manyArgs(*arg): print "I was called with", len(arg), "arguments:", arg >>> manyArgs(1) I was called with 1 arguments: (1,) >>> manyArgs(1, 2,3) I was called with 3 arguments: (1, 2, 3)

Como puedes ver, Python te dará una sola tupla con todos los argumentos.

Para los argumentos de palabras clave, debe aceptarlos como un argumento real separado, como se muestra en la respuesta de Skurmedel .


Si puedo, el código de Skurmedel es para python 2; para adaptarlo a python 3, cambie iteritems a items y agregue paréntesis para print . Eso podría impedir que los principiantes como yo tropezaran con: AttributeError: ''dict'' object has no attribute ''iteritems'' y busca en otra parte (por ejemplo , el objeto '''' dict ''de error no tiene ningún atributo'' iteritems '''' cuando se intenta usar el write_shp () de NetworkX ) por qué esto está ocurriendo.

def myfunc(**kwargs): for k,v in kwargs.items(): print("%s = %s" % (k, v)) myfunc(abc=123, efh=456) # abc = 123 # efh = 456

y:

def myfunc2(*args, **kwargs): for a in args: print(a) for k,v in kwargs.items(): print("%s = %s" % (k, v)) myfunc2(1, 2, 3, banan=123) # 1 # 2 # 3 # banan = 123


def f(dic): if ''a'' in dic: print dic[''a''], pass else: print ''None'', if ''b'' in dic: print dic[''b''], pass else: print ''None'', if ''c'' in dic: print dic[''c''], pass else: print ''None'', print pass f({}) f({''a'':20, ''c'':30}) f({''a'':20, ''c'':30, ''b'':''red''}) ____________

el código de arriba dará salida

None None None 20 None 30 20 red 30

Esto es tan bueno como pasar argumentos variables por medio de un diccionario