Saya ingin memanggil fungsi dalam python menggunakan kamus.
Ini beberapa kode:
d = dict(param='test')
def f(param):
print(param)
f(d)
Ini mencetak {'param': 'test'}
tetapi saya ingin hanya mencetak test
.
Saya ingin ini berfungsi serupa untuk parameter lainnya:
d = dict(p1=1, p2=2)
def f2(p1, p2):
print(p1, p2)
f2(d)
Apakah ini mungkin?
python
function
dictionary
parameters
keyword
Dave Hillier
sumber
sumber
Beberapa detail tambahan yang mungkin berguna untuk diketahui (pertanyaan yang saya miliki setelah membaca ini dan pergi dan menguji):
Contoh:
Nomor 1: Fungsi ini dapat memiliki parameter yang tidak termasuk dalam kamus
Nomor 2: Anda tidak dapat mengganti parameter yang sudah ada dalam kamus
Nomor 3: Kamus tidak dapat memiliki parameter yang tidak ada dalam fungsi.
Seperti yang diminta dalam komentar, solusi untuk Nomor 3 adalah menyaring kamus berdasarkan argumen kata kunci yang tersedia di fungsi:
Opsi lain adalah menerima (dan mengabaikan) kwarg tambahan di fungsi Anda:
Perhatikan lebih jauh daripada Anda dapat menggunakan argumen dan daftar posisi atau tuple secara efektif dengan cara yang sama seperti kwargs, berikut adalah contoh yang lebih maju yang menggabungkan argumen posisi dan kata kunci:
sumber
'hello {greeting} {name}'.format( **{'name': 'Andrew', 'greeting': 'Mr'})
Dalam python, ini disebut "membongkar", dan Anda dapat menemukan sedikit tentang hal itu di tutorial . Dokumentasi itu menyebalkan, saya setuju, terutama karena betapa fantastiknya manfaatnya.
sumber
Ini ya pergi - bekerja sembarang iterable lainnya:
sumber