Funksiyalarning argumentlari.
Funksiyalar ixtiyoriy sondagi argumentlarni qabul qilishi yoki umuman birorta ham argument qabul qilmasligi mumkin. Bundan tashqari ixtiyoriy sonli argumentli, pozitsiyali va nomlangan argumentli hamda majburiy va majburiy bo`lmagan argumentli funksiyalar ham mavjud.
>>> def func(a, b, c=2): # c – bu majburiy bo`lmagan argumentdir
... return a + b + c
...
>>> func(1, 2) # a = 1, b = 2, c = 2 (odatiy qiymat)
5
>>> func(1, 2, 3) # a = 1, b = 2, c = 3
6
>>> func(a=1, b=3) # a = 1, b = 3, c = 2
6
>>> func(a=3, c=6) # a = 3, c = 6, b aniqlanmagan
Traceback (most recent call last):
File "", line 1, in
func(a=3, c=6)
TypeError: func() takes at least 2 arguments (2 given)
>>> def func(*args):
... return args
...
>>> func(1, 2, 3, 'abc')
(1, 2, 3, 'abc')
>>> func()
()
>>> func(1)
(1,)
Funksiya bundan tashqari pozitsiyali argumantlarning o`zgarib turuvchi sonini qabul qilishi ham mumkin. U holda nomdan oldin * belgisi qo`yiladi.
Misolda ko`rinib turibdiki, args – bu funksiyaning barcha uzatilgan argumantlaridan iborat kortejdir, va bu o`zgaruvchi bilan xuddi kortej kabi ishlash mumkin ekan.
>>> def func(**kwargs):
... return kwargs
...
>>> func(a=1, b=2, c=3)
{'a': 1, 'c': 3, 'b': 2}
>>> func()
{}
>>> func(a='python')
{'a': 'python'}
Funksiya nomlangan argumentlarning ham ixtiyoriy sonini qabul qilishi mumkin. Bu holda o`zgaruvchidan oldin ** belgisi qo`yiladi. kwargs o`zgaruvchisida bizda o`z ixtiyorimiz bo`yicha istagan amallarni qo`llashimiz mumkin bo`lgan lug`at joylashgan.
Anonim funksiyalar, lambda instruksiyasi
>>> func = lambda x, y: x + y
>>> func(1, 2)
3
>>> func('a', 'b')
'ab'
>>> (lambda x, y: x + y)(1, 2)
3
>>> (lambda x, y: x + y)('a', 'b')
'ab'
Anonim funksiyalar faqatgina bitta ko`rsatmadan iborat bo`lishi mumkin, lekin ular shunga mos tarzda juda tez bajariladi ham. Anonim funksiyalar lambda ko`rsatmasi yordamida yaratiladi. Bundan tashqri ularni biz def func() da bajarganimiz kabi o`zgaruvchilarga moslashtirish ham shart emas.
lambda funksiyaga odatiy funksiyadan farqli tarzda return ko`rsatmasi talab etilmaydi, boshqa barcha jihatlari bo`yicha u oddiy funksiyalardan farq qilmaydi:
>>> func = lambda *args: args
>>> func(1, 2, 3, 4)
(1, 2, 3, 4)
20-bob
Dostları ilə paylaş: |