Di Python de, lîste (array), pirtik, û ferheng dikarin bêne berfireh kirin (nepak kirin) û hêmanên wan ên têkildar dikarin wekî argumanên fonksiyonê bi hev re werin derbas kirin.
Dema gazîkirina fonksiyonekê, ji bo lîste û tîpan argumana bi * û ji bo ferhengan bi ** diyar bike. Bala xwe bidin hejmara stêrkan *.
Agahiyên jêrîn li vir têne şirove kirin.
- Bi * (yek stêrkek) lîsteyek an pirtikan fireh bike (veke)
- Ji bo fonksiyonên bi argumanên xwerû
- Ji bo fonksiyonên bi argumanên dirêj-guhêrbar
- Ferhengê bi ** (du stêrk) fireh bike (veke)
- Ji bo fonksiyonên bi argumanên xwerû
- Ji bo fonksiyonên bi argumanên dirêj-guhêrbar
Ji bo karanîna bingehîn a fonksiyonên Python, argumanên xwerû, û argumanên dirêjiya guhêrbar bi *,** re dema ku fonksiyonan destnîşan dikin, gotara jêrîn bibînin.
- TÊKIRIN:Meriv çawa di fonksiyonên Python de argumanên xwerû bikar tîne û destnîşan dike
- TÊKIRIN:Meriv çawa di Python de argumanên dirêjahiya guhêrbar bikar tîne(
*args
,**kwargs
)
Bi * (yek stêrkek) lîsteyek an pirtikan fireh bike (veke)
Dema ku lîsteyek an pirtikek wekî argumanek bi * tête diyar kirin, ew tê berfireh kirin û her hêman wekî argumanek cûda tê derbas kirin.
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
Daxuyaniya jêrîn ji bo navnîşek e, lê heman tişt ji bo tupleyê re derbas dibe.
Ger hejmara hêmanan bi hejmara argumanan re nebe hev, xeletiyek TypeError çêdibe.
# 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
Ji bo fonksiyonên bi argumanên xwerû
Ger argumanek xwerû were danîn, heke hejmara hêmanan têrê neke argumana xwerû tê bikar anîn. Ger hejmara hêmanan pir mezin be, xeletiyek TypeError çêdibe.
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
Ji bo fonksiyonên bi argumanên dirêj-guhêrbar
Ger argumanek dirêj-guhêrbar were danîn, hemî hêmanên piştî hêmanê ji bo argumana pozîsyonê derbasî argumana dirêj-guhêrbar dibin.
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')
Ferhengê bi ** (du stêrk) fireh bike (veke)
Dema ku dîktera ferhengê wekî argumanek bi **-ê tê destnîşan kirin, bişkokên hêmanan wekî navên argumanan û nirxan wekî nirxên argumanan têne berfireh kirin, û her yek wekî argumanek cûda têne derbas kirin.
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
Ger mifteyek tune ku bi navê argumanê re têkildar be an jî mifteyek ku hev nagire hebe, dê xeletiyek TypeError derkeve.
# 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'
Ji bo fonksiyonên bi argumanên xwerû
Wêneya ku tê de tenê nirxên navên argumanan ên ku bi kilîtên di ferhengê de li hev dikin têne nûve kirin.
Mifteya ku bi navê argumana hev nagire dê bibe sedema xeletiyek 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'
Ji bo fonksiyonên bi argumanên dirêj-guhêrbar
Ger argumanên bi dirêjiya guhêrbar werin danîn, her hêmanek bi mifteyek ji bilî navê argumana ku wekî arguman hatiye destnîşan kirin ji argumana dirêjiya guhêrbar re derbas dibe.
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'}