きゃっとぐるーぶ

忘れてもいいようにメモを取っても、メモを取ったことを忘れる男の備忘録

可変長引数 ふたつのreturnから返ってくる

def foo(*args, **kwargs):
    return args
    
    for k, v in kwargs.items():
        return k, v

ret = foo(3, {'Hello': 'World'})

# 
# (3, {'Hello': 'World'})

私のreturnの理解は、ひとつめのreturnで関数を抜けるでした。

def bar(arg)
    value = 100
    if arg > value:
        return value
    return None

式が真であれば value が返りますが、return None は返らない。

しかし、可変長引数を用いた関数の場合はargs, kwargsのどちらのreturnからも返ってきています。 じゃぁと、露骨にreturnを並べてみました。

def chao(*args, **kwargs):
    return args
    return kwargs

chao('chao', 'bey', {'neko': 'chatora'})

# ('chao', 'bey' , {'neko': 'chatora'})

どちらからもちゃんと返ってきます。

結論:私にはわからない