Python ශ්‍රිතවල පෙරනිමි තර්ක භාවිතා කරන්නේ කෙසේද සහ සටහන් කරන්නේ කෙසේද

ව්යාපාරික

Python ශ්‍රිත නිර්වචනයක පෙරනිමි තර්කයක් සැකසීම ශ්‍රිත ඇමතුමක් අතරතුර තර්කය මඟ හැරියහොත් පෙරනිමි අගය භාවිතා කිරීමට හේතු වේ.

පහත විස්තර පහත විස්තර කෙරේ.

  • පෙරනිමි තර්ක සැකසීම
  • පෙරනිමි තර්කවල පිහිටීමෙහි සීමාවන්
  • ලැයිස්තුවක් හෝ ශබ්ද කෝෂයක් පෙරනිමි අගය ලෙස භාවිතා කරන විට බව සලකන්න

පෙරනිමි තර්ක සැකසීම

ශ්‍රිත නිර්වචනයේ තර්ක නාමය = පෙරනිමි අගය නම්, අදාළ තර්කය මඟ හැර ඇති විට පෙරනිමි අගය භාවිතා වේ.

def func_default(arg1, arg2='default_x', arg3='default_y'):
    print(arg1)
    print(arg2)
    print(arg3)

func_default('a')
# a
# default_x
# default_y

func_default('a', 'b')
# a
# b
# default_y

func_default('a', arg3='c')
# a
# default_x
# c

පෙරනිමි තර්කවල පිහිටීමෙහි සීමාවන්

ශ්‍රිතයක් අර්ථ දැක්වීමේදී සාමාන්‍ය තර්කයකට පෙර පෙරනිමි තර්කයක් තැබීම (පෙරනිමි අගයක් නියම කර නොමැති තර්කයක්) දෝෂයක් ඇති කරයි.
SyntaxError

# def func_default_error(arg2='default_a', arg3='default_b', arg1):
#     print(arg1)
#     print(arg2)

# SyntaxError: non-default argument follows default argument

ලැයිස්තුවක් හෝ ශබ්ද කෝෂයක් පෙරනිමි අගය ලෙස භාවිතා කරන විට බව සලකන්න

ලැයිස්තුවක් හෝ ශබ්ද කෝෂයක් වැනි යාවත්කාලීන කළ හැකි (විකෘති) වස්තුවක් පෙරනිමි අගය ලෙස දක්වා තිබේ නම්, ශ්‍රිතය නිර්වචනය කරන විට එම වස්තුව නිර්මාණය වේ. එවිට, අදාළ තර්කය නොමැතිව ශ්‍රිතය කැඳවූ විට, එම වස්තුවම භාවිතා වේ.

ශ්‍රිත අර්ථ දැක්වීම ක්‍රියාත්මක කරන විට පෙරනිමි තර්ක අගයන් වමේ සිට දකුණට ඇගයීමට ලක් කෙරේ. මෙයින් අදහස් කරන්නේ ශ්‍රිතය නිර්වචනය කළ විට පෙරනිමි තර්ක ප්‍රකාශනය එක් වරක් පමණක් ඇගයීමට ලක් වන අතර, එක් එක් ඇමතුම සඳහා එකම “ගණනය කළ” අගය භාවිතා කරන බවයි.
8.7. Function definitions — Python 3.10.2 Documentation

මේ අනුව, උදාහරණයක් ලෙස, ලැයිස්තුවක් හෝ ශබ්ද කෝෂයක් එහි පෙරනිමි තර්කය ලෙස ගෙන එයට මූලද්‍රව්‍ය එකතු කරන ශ්‍රිතයක් අර්ථ දක්වා ඇත්නම් සහ එම තර්කයෙන් තොරව බහු වාරයක් කැඳවනු ලැබුවහොත්, මූලද්‍රව්‍ය එකම වස්තුවට නැවත නැවතත් එකතු වේ.

ලැයිස්තුගත කිරීම සඳහා උදාහරණයක්.

def func_default_list(l=[0, 1, 2], v=3):
    l.append(v)
    print(l)

func_default_list([0, 0, 0], 100)
# [0, 0, 0, 100]

func_default_list()
# [0, 1, 2, 3]

func_default_list()
# [0, 1, 2, 3, 3]

func_default_list()
# [0, 1, 2, 3, 3, 3]

ශබ්දකෝෂයක් සඳහා උදාහරණයක්.

def func_default_dict(d={'default': 0}, k='new', v=100):
    d[k] = v
    print(d)

func_default_dict()
# {'default': 0, 'new': 100}

func_default_dict(k='new2', v=200)
# {'default': 0, 'new': 100, 'new2': 200}

ශ්‍රිතය කැඳවන සෑම අවස්ථාවකම නව වස්තුවක් නිර්මාණය වේ.

def func_default_list_none(l=None, v=3):
    if l is None:
        l = [0, 1, 2]
    l.append(v)
    print(l)

func_default_list_none()
# [0, 1, 2, 3]

func_default_list_none()
# [0, 1, 2, 3]