Python හි, ලැයිස්තු (අරා), ටියුපල් සහ ශබ්ද කෝෂ පුළුල් කළ හැකි (අසුරන ලද) සහ ඒවායේ අදාළ මූලද්රව්ය ක්රියාකාරී තර්ක ලෙස එකට සම්මත කළ හැකිය.
ශ්රිතයක් ඇමතීමේදී, ලැයිස්තු සහ ටුපල් සඳහා * සහ ශබ්දකෝෂ සඳහා ** සමඟ තර්කය සඳහන් කරන්න. තරු ලකුණු ගණන සටහන් කරන්න *.
පහත විස්තර මෙහි විස්තර කර ඇත.
- * (එක් තරු ලකුණක්) සමඟ ලැයිස්තුවක් හෝ ටියුපල් දිග හරින්න (අසුරන්න)
- පෙරනිමි තර්ක සහිත කාර්යයන් සඳහා
- විචල්ය-දිග තර්ක සහිත ශ්රිත සඳහා
- ** (තරු ලකුණු දෙකක්) සමඟ ශබ්ද කෝෂය පුළුල් කරන්න (අසුරන්න)
- පෙරනිමි තර්ක සහිත කාර්යයන් සඳහා
- විචල්ය-දිග තර්ක සහිත ශ්රිත සඳහා
ශ්රිත නිර්වචනය කිරීමේදී පයිතන් ශ්රිත, පෙරනිමි තර්ක සහ *,** සමඟ විචල්ය දිග තර්කවල මූලික භාවිතය සඳහා පහත ලිපිය බලන්න.
- සම්බන්ධිත:Python ශ්රිතවල පෙරනිමි තර්ක භාවිතා කරන්නේ කෙසේද සහ සටහන් කරන්නේ කෙසේද
- සම්බන්ධිත:පයිතන් හි විචල්ය දිග තර්ක භාවිතා කරන්නේ කෙසේද(
*args
,**kwargs
)
* (එක් තරු ලකුණක්) සමඟ ලැයිස්තුවක් හෝ ටියුපල් දිග හරින්න (අසුරන්න)
ලැයිස්තුවක් හෝ ටියුපල් * සමඟ තර්කයක් ලෙස සඳහන් කළ විට, එය පුළුල් වන අතර එක් එක් මූලද්රව්ය වෙනම තර්කයක් ලෙස සම්මත වේ.
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
පහත පැහැදිලි කිරීම ලැයිස්තුවක් සඳහා වේ, නමුත් එය ටුපල් සඳහාද අදාළ වේ.
මූලද්රව්ය ගණන තර්ක ගණනට නොගැලපේ නම්, TypeError දෝෂයක් ඇතිවේ.
# 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
පෙරනිමි තර්ක සහිත කාර්යයන් සඳහා
පෙරනිමි තර්කයක් සකසා ඇත්නම්, මූලද්රව්ය ගණන ප්රමාණවත් නොවේ නම් පෙරනිමි තර්කය භාවිතා වේ. මූලද්රව්ය ගණන ඉතා විශාල නම්, 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
විචල්ය-දිග තර්ක සහිත ශ්රිත සඳහා
විචල්ය-දිග තර්කයක් සකසා ඇත්නම්, ස්ථානීය තර්කය සඳහා වන මූලද්රව්යයට පසුව ඇති සියලුම මූලද්රව්ය විචල්ය-දිග තර්කයට යවනු ලැබේ.
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')
** (තරු ලකුණු දෙකක්) සමඟ ශබ්ද කෝෂය පුළුල් කරන්න (අසුරන්න)
ශබ්ද කෝෂ ආඥාවක් ** සමඟ තර්කයක් ලෙස සඳහන් කළ විට, මූලද්රව්ය යතුරු තර්ක නාම ලෙසත් අගයන් තර්ක අගයන් ලෙසත් ප්රසාරණය වන අතර ඒ සෑම එකක්ම වෙනම තර්කයක් ලෙස සම්මත වේ.
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
තර්ක නාමයට ගැලපෙන යතුරක් නොමැති නම් හෝ නොගැලපෙන යතුරක් තිබේ නම්, TypeError දෝෂයක් ඇති වේ.
# 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'
පෙරනිමි තර්ක සහිත කාර්යයන් සඳහා
ශබ්දකෝෂයේ යතුරුවලට ගැළපෙන තර්ක නාමවල අගයන් පමණක් යාවත්කාලීන කර ඇති රූපය.
තර්ක නාමයට නොගැලපෙන යතුරක් 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'
විචල්ය-දිග තර්ක සහිත ශ්රිත සඳහා
විචල්ය-දිග තර්ක සකසා ඇත්නම්, තර්කය ලෙස දක්වා ඇති තර්ක නාමය හැර වෙනත් යතුරක් සහිත ඕනෑම මූලද්රව්යයක් විචල්ය-දිග තර්කයට යවනු ලැබේ.
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'}