Chciałbym wywołać funkcję w Pythonie za pomocą słownika.
Oto kod:
d = dict(param='test')
def f(param):
print(param)
f(d)
To drukuje, {'param': 'test'}
ale chciałbym, żeby to po prostu wydrukować test
.
Chciałbym, aby działał podobnie dla większej liczby parametrów:
d = dict(p1=1, p2=2)
def f2(p1, p2):
print(p1, p2)
f2(d)
czy to możliwe?
python
function
dictionary
parameters
keyword
Dave Hillier
źródło
źródło
Kilka dodatkowych szczegółów, które mogą być pomocne w poznaniu (pytania, które miałem po przeczytaniu tego i poszedłem i przetestowałem):
Przykłady:
Numer 1: Funkcja może mieć parametry, które nie są uwzględnione w słowniku
Numer 2: Nie możesz przesłonić parametru, który jest już w słowniku
Numer 3: Słownik nie może mieć parametrów, które nie są w funkcji.
Zgodnie z żądaniem w komentarzach rozwiązaniem numeru 3 jest filtrowanie słownika na podstawie argumentów słów kluczowych dostępnych w funkcji:
Inną opcją jest zaakceptowanie (i zignorowanie) dodatkowych kwargs w twojej funkcji:
Zauważ, że dalej nie możesz używać argumentów pozycyjnych i list lub krotek w taki sam sposób jak kwargs, oto bardziej zaawansowany przykład obejmujący zarówno argumenty pozycyjne, jak i słowa kluczowe:
źródło
'hello {greeting} {name}'.format( **{'name': 'Andrew', 'greeting': 'Mr'})
W Pythonie nazywa się to „rozpakowywaniem” i można o tym trochę przeczytać w samouczku . Zgadzam się z tym, że dokumentacja jest do bani, szczególnie ze względu na to, jak fantastycznie jest przydatna.
źródło
Proszę bardzo - działa tylko każda inna iterowalna:
źródło