Ngembangake lan ngliwati dhaptar, tuple, lan kamus minangka argumen fungsi ing Python

Bisnis

Ing Python, dhaptar (array), tuple, lan kamus bisa ditambahi (unpacked) lan unsur-unsur kasebut bisa diterusake bebarengan minangka argumen fungsi.

Nalika nelpon fungsi, nemtokake argumen karo * kanggo dhaptar lan tuple lan ** kanggo kamus. Wigati nomer asterisk *.

Rincian ing ngisor iki diterangake ing kene.

  • Expand (unpack) dhaptar utawa tuple kanthi * (siji tanda bintang)
    • Kanggo fungsi kanthi argumen standar
    • Kanggo fungsi karo argumen variabel-dawa
  • Mbukak kamus nganggo ** (loro tanda bintang)
    • Kanggo fungsi kanthi argumen standar
    • Kanggo fungsi karo argumen variabel-dawa

Waca artikel ing ngisor iki kanggo panggunaan dhasar fungsi Python, argumen standar, lan argumen dawa variabel kanthi *,** nalika nemtokake fungsi.

Expand (unpack) dhaptar utawa tuple kanthi * (siji tanda bintang)

Nalika dhaftar utawa tuple ditemtokake minangka argumen karo *, iku ditambahi lan saben unsur liwati minangka argumen kapisah.

def func(arg1, arg2, arg3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

l = ['one', 'two', 'three']

func(*l)
# arg1 = one
# arg2 = two
# arg3 = three

func(*['one', 'two', 'three'])
# arg1 = one
# arg2 = two
# arg3 = three

t = ('one', 'two', 'three')

func(*t)
# arg1 = one
# arg2 = two
# arg3 = three

func(*('one', 'two', 'three'))
# arg1 = one
# arg2 = two
# arg3 = three

Panjelasan ing ngisor iki kanggo dhaptar, nanging padha karo tuple.

Yen jumlah unsur ora cocog karo jumlah argumen, kesalahan TypeError dumadi.

# func(*['one', 'two'])
# TypeError: func() missing 1 required positional argument: 'arg3'

# func(*['one', 'two', 'three', 'four'])
# TypeError: func() takes 3 positional arguments but 4 were given

Kanggo fungsi kanthi argumen standar

Yen argumen standar disetel, argumen standar digunakake yen jumlah unsur ora cukup. Yen jumlah unsur akeh banget, ana kesalahan TypeError.

def func_default(arg1=1, arg2=2, arg3=3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

func_default(*['one', 'two'])
# arg1 = one
# arg2 = two
# arg3 = 3

func_default(*['one'])
# arg1 = one
# arg2 = 2
# arg3 = 3

# func_default(*['one', 'two', 'three', 'four'])
# TypeError: func_default() takes from 0 to 3 positional arguments but 4 were given

Kanggo fungsi karo argumen variabel-dawa

Yen argumen variabel-dawa disetel, kabeh unsur sawise unsur kanggo argumen posisi diterusake menyang argumen variabel-dawa.

def func_args(arg1, *args):
    print('arg1 =', arg1)
    print('args =', args)

func_args(*['one', 'two'])
# arg1 = one
# args = ('two',)

func_args(*['one', 'two', 'three'])
# arg1 = one
# args = ('two', 'three')

func_args(*['one', 'two', 'three', 'four'])
# arg1 = one
# args = ('two', 'three', 'four')

Mbukak kamus nganggo ** (loro tanda bintang)

Nalika dict kamus kasebut minangka argumen karo **, kunci unsur ditambahi minangka jeneng argumen lan nilai minangka nilai argumen, lan saben diterusake minangka argumen sing kapisah.

def func(arg1, arg2, arg3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

d = {'arg1': 'one', 'arg2': 'two', 'arg3': 'three'}

func(**d)
# arg1 = one
# arg2 = two
# arg3 = three

func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# arg2 = two
# arg3 = three

Yen ora ana kunci sing cocog karo jeneng argumen utawa ana kunci sing ora cocog, kesalahan TypeError bakal nyebabake.

# func(**{'arg1': 'one', 'arg2': 'two'})
# TypeError: func() missing 1 required positional argument: 'arg3'

# func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# TypeError: func() got an unexpected keyword argument 'arg4'

Kanggo fungsi kanthi argumen standar

Gambar sing mung dianyari nilai-nilai argumen sing cocog karo kunci ing kamus.

Tombol sing ora cocog karo jeneng argumen bakal nyebabake kesalahan TypeError.

def func_default(arg1=1, arg2=2, arg3=3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

func_default(**{'arg1': 'one'})
# arg1 = one
# arg2 = 2
# arg3 = 3

func_default(**{'arg2': 'two', 'arg3': 'three'})
# arg1 = 1
# arg2 = two
# arg3 = three

# func_default(**{'arg1': 'one', 'arg4': 'four'})
# TypeError: func_default() got an unexpected keyword argument 'arg4'

Kanggo fungsi karo argumen variabel-dawa

Yen argumen variabel-dawa disetel, unsur apa wae sing nduweni kunci liyane saka jeneng argumen sing ditemtokake minangka argumen diterusake menyang argumen variabel-dawa.

def func_kwargs(arg1, **kwargs):
    print('arg1 =', arg1)
    print('kwargs =', kwargs)

func_kwargs(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three'}

func_kwargs(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three', 'arg4': 'four'}

func_kwargs(**{'arg1': 'one', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg3': 'three'}