0

J'essaye de construire un nombre variable d'arguments logger comme suit. Je voudrais l'appeler comme:Comment imprimer la liste à l'intérieur de l'impression python?

log(1, "Index: ", request_index, ", ", section)

def log(level, *msg) : 

    global print_debug_lastTime 
    currentTime = datetime.datetime.now().microsecond 

    # You can access global variables without the global keyword. 
    if g_debug_level & level != 0: 

     print("[DEBUG] " \ 
       + "%02d" % datetime.datetime.now().hour + ":" \ 
       + "%02d" % datetime.datetime.now().minute + ":" \ 
       + "%02d" % datetime.datetime.now().second + ":" \ 
       + str(currentTime) \ 
       + "%7d " % (currentTime - print_debug_lastTime) \ 
       + for m in msg) 

Mais je ne parviens pas à imprimer le nombre variable d'arguments. Dans un premier temps, je suis en train d'exécuter ce code simple sur l'interprète:

>>> print(str(x) for x in (0,1,2,3)) 
<generator object <genexpr> at 0x6ffffe5e550> 

Je voudrais à imprimer 0123, mais il est l'impression comme peut être paraître.

+2

C'est parce que ce qui est dans votre impression est une expression de générateur , donc vous pouvez faire ceci: 'print (list (str (x) pour x in (0 1,2,3))). – idjaw

+0

Merci! 'print (" ".join ([str (x) pour x dans (0,1,2,3)]))' a-t-il fonctionné? – user

Répondre

1

joindre votre pour avec "[]"

print(tuple([str(x) for x in (0,1,2,3)])) 

output = [ '0', '1', '2', '3']

converti à tuple si vous voulez

print(tuple([str(x) for x in (0,1,2,3)])) 

output = ('0', '1', '2', '3')

et dans votre cas, vous voulez concaténer avec autre chaîne vous pouvez utiliser ci-dessous et ajouter votre chaîne de journal,

tuple (str (x) pour x dans (0,1,2,3)) .__ str __()

1

Essayez ceci:

print(''.join(str(x) for x in [0, 1, 2, 3])) 
#
+1

Les crochets après 'join' peuvent être supprimés. – leaf