Katika Python, orodha (safu), nakala, na kamusi zinaweza kupanuliwa (kufunguliwa) na vipengele vyake vinaweza kupitishwa pamoja kama hoja za kazi.
Unapoita chaguo za kukokotoa, taja hoja na * ya orodha na nakala na ** kwa kamusi. Kumbuka idadi ya nyota *.
Maelezo yafuatayo yanaelezwa hapa.
- Panua (fungua) orodha au tuple kwa * (nyota moja)
- Kwa chaguo za kukokotoa zilizo na hoja chaguo-msingi
- Kwa chaguo za kukokotoa zilizo na hoja za urefu tofauti
- Panua (unpack) kamusi na ** (nyota mbili)
- Kwa chaguo za kukokotoa zilizo na hoja chaguo-msingi
- Kwa chaguo za kukokotoa zilizo na hoja za urefu tofauti
Tazama kifungu kifuatacho kwa utumiaji wa kimsingi wa kazi za Python, hoja chaguo-msingi, na hoja za urefu tofauti na *,** wakati wa kufafanua kazi.
- INAYOHUSIANA:Jinsi ya kutumia na kumbuka hoja chaguo-msingi katika kazi za Python
- INAYOHUSIANA:Jinsi ya kutumia hoja za urefu tofauti katika Python(
*args
,**kwargs
)
Panua (fungua) orodha au tuple kwa * (nyota moja)
Orodha au nakala inapobainishwa kama hoja na *, hupanuliwa na kila kipengele hupitishwa kama hoja tofauti.
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
Maelezo yafuatayo ni ya orodha, lakini hiyo hiyo inatumika kwa tuple.
Ikiwa idadi ya vipengele hailingani na idadi ya hoja, hitilafu ya TypeError hutokea.
# 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
Kwa chaguo za kukokotoa zilizo na hoja chaguo-msingi
Ikiwa hoja chaguo-msingi imewekwa, hoja chaguo-msingi inatumiwa ikiwa idadi ya vipengele haitoshi. Ikiwa idadi ya vipengele ni kubwa sana, hitilafu ya TypeError hutokea.
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
Kwa chaguo za kukokotoa zilizo na hoja za urefu tofauti
Ikiwa hoja ya urefu tofauti imewekwa, vipengele vyote baada ya kipengele cha hoja ya msimamo hupitishwa kwa hoja ya urefu tofauti.
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')
Panua (unpack) kamusi na ** (nyota mbili)
Amri ya kamusi inapobainishwa kama hoja na **, vitufe vya vipengele hupanuliwa kama majina ya hoja na thamani kama thamani za hoja, na kila moja hupitishwa kama hoja tofauti.
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
Ikiwa hakuna ufunguo unaolingana na jina la hoja au kuna ufunguo ambao haulingani, hitilafu ya TypeError itatokea.
# 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'
Kwa chaguo za kukokotoa zilizo na hoja chaguo-msingi
Picha ambayo ni thamani tu za majina ya hoja zinazolingana na funguo katika kamusi zinasasishwa.
Kitufe ambacho hakilingani na jina la hoja kitasababisha hitilafu ya 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'
Kwa chaguo za kukokotoa zilizo na hoja za urefu tofauti
Ikiwa hoja za urefu tofauti zimewekwa, kipengele chochote kilicho na ufunguo mwingine isipokuwa jina la hoja iliyobainishwa kama hoja hupitishwa kwa hoja ya urefu tofauti.
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'}