Python හි ශ්රිතයක් තුළ ශ්රිතය
Python හි, එක් ශ්රිත තුළ තවත් ශ්රිත
අැති කර ගත හැකිය. අපට බාහිර ශ්රිතයක්
outer ඇති බව සිතමු, එහි ඇතුළත
inner ශ්රිතය පිහිටා ඇත:
def outer():
def inner():
pass
ඉහත දක්වා ඇති උදාහරණය ප්රමාණවත් තරම්
සරල ලෙස පෙනේ. කෙසේ වෙතත්, ශ්රිතයේ
ශරීරය තුළ outer හැර
inner වෙනත් මෙහෙයුම් ද
ක්රියාත්මක වන අවස්ථා බොහෝ විට පවතී.
කේතය සරල කිරීම සඳහා, කෙනෙකුට
inner පිටත කේත ගොනුවට ගෙන යා හැකිය,
නමුත් මෙම ශ්රිතය භාවිතා කරනු ලබන්නේ
එක් වරක් පමණක් වන අතර ශ්රිතය තුළට පමණි
outer. එබැවින් එය පිටතට ගෙන යාම
අර්ථවත් නොවේ.
අපි උදාහරණයක් සලකා බලමු, ශ්රිතයට
outer ලැයිස්තුවක් ලබා දී ඇති විට.
ශ්රිතය භාවිතා කරමින් inner සංඛ්යාත්මක අංගය
ලැයිස්තුව වර්ග බලයට නංවනු ඇත.
මේ සඳහා ශ්රිතයට පසුව inner
හිස් ලැයිස්තුවක් අැති කරන්න res, එහි
ලූපය තුළ වර්ග කරන ලද මූලද්රව්ය එක් කරනු ඇත:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
අපි ශ්රිතය කැඳවමු outer,
එයට පරාමිති ලැයිස්තුව පවරන්න සහ ප්රතිදානය
කොන්සෝලයට:
print(outer([2, 3, 5])) # [4, 9, 25] ප්රතිදානය කරයි
බාහිර සහ අභ්යන්තර ශ්රිත ලියන්න, ඒවායේ ඒකාබද්ධ ක්රියාකාරිත්වය ප්රතිදානය කරනු ඇත ලැයිස්තුවේ එක් එක් තන්තු මූලද්රව්ය අකුරු විශාල කර
ශ්රිත ලබා දී ඇත:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
කේතය නැවත ලියන්න එමඟින් func1
func2 සඳහා අභ්යන්තර ශ්රිතයක් වනු ඇත.