ការពង្រីក និងឆ្លងកាត់បញ្ជី tuples និងវចនានុក្រមជាអាគុយម៉ង់មុខងារនៅក្នុង Python

អាជីវកម្ម

នៅក្នុង Python បញ្ជី (អារេ) tuples និងវចនានុក្រមអាចត្រូវបានពង្រីក (ពន្លា) ហើយធាតុរៀងៗខ្លួនអាចត្រូវបានឆ្លងកាត់ជាមួយគ្នាជាអាគុយម៉ង់មុខងារ។

នៅពេលហៅមុខងារ បញ្ជាក់អាគុយម៉ង់ជាមួយ * សម្រាប់បញ្ជី និង tuples និង ** សម្រាប់វចនានុក្រម។ ចំណាំចំនួនផ្កាយ * ។

ព័ត៌មានលម្អិតខាងក្រោមត្រូវបានពិពណ៌នានៅទីនេះ។

  • ពង្រីក (ពន្លា) បញ្ជី ឬ tuple ជាមួយ * (សញ្ញាផ្កាយមួយ)
    • សម្រាប់មុខងារដែលមានអាគុយម៉ង់លំនាំដើម
    • សម្រាប់អនុគមន៍ដែលមានអាគុយម៉ង់ប្រវែងអថេរ
  • ពង្រីក (ពន្លា) វចនានុក្រមជាមួយ ** (សញ្ញាផ្កាយពីរ)
    • សម្រាប់មុខងារដែលមានអាគុយម៉ង់លំនាំដើម
    • សម្រាប់អនុគមន៍ដែលមានអាគុយម៉ង់ប្រវែងអថេរ

សូមមើលអត្ថបទខាងក្រោមសម្រាប់ការប្រើប្រាស់ជាមូលដ្ឋាននៃមុខងារ Python អាគុយម៉ង់លំនាំដើម និងអាគុយម៉ង់ប្រវែងអថេរជាមួយ *,** នៅពេលកំណត់មុខងារ។

ពង្រីក (ពន្លា) បញ្ជី ឬ tuple ជាមួយ * (សញ្ញាផ្កាយមួយ)

នៅពេលដែលបញ្ជី ឬ tuple ត្រូវបានបញ្ជាក់ជាអាគុយម៉ង់ជាមួយ * វាត្រូវបានពង្រីក ហើយធាតុនីមួយៗត្រូវបានឆ្លងកាត់ជាអាគុយម៉ង់ដាច់ដោយឡែក។

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

ការពន្យល់ខាងក្រោមគឺសម្រាប់បញ្ជីមួយ ប៉ុន្តែអនុវត្តដូចគ្នាចំពោះ tuple មួយ។

ប្រសិនបើចំនួនធាតុមិនត្រូវគ្នានឹងចំនួនអាគុយម៉ង់នោះ កំហុស 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')

ពង្រីក (ពន្លា) វចនានុក្រមជាមួយ ** (សញ្ញាផ្កាយពីរ)

នៅពេលដែលវចនានុក្រម dict ត្រូវបានបញ្ជាក់ជាអាគុយម៉ង់ជាមួយ ** គ្រាប់ចុចធាតុត្រូវបានពង្រីកជាឈ្មោះអាគុយម៉ង់ និងតម្លៃជាតម្លៃអាគុយម៉ង់ ហើយនីមួយៗត្រូវបានឆ្លងកាត់ជាអាគុយម៉ង់ដាច់ដោយឡែក។

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'}
Copied title and URL