Bir fonksiyona değişken sayıda argüman nasıl iletilir?

Python ile Kodlama Mülakatı Soruları Pratiği

Kirill Smirnov

Data Science Consultant, Altran

Argüman türleri

İki tür argüman vardır:

 

Python ile Kodlama Mülakatı Soruları Pratiği

Argüman türleri

İki tür argüman vardır:

  • konumsal argümanlar

 

Python ile Kodlama Mülakatı Soruları Pratiği

Argüman türleri

İki tür argüman vardır:

  • konumsal argümanlar
  • anahtar sözcük argümanları

 

Python ile Kodlama Mülakatı Soruları Pratiği

Argüman türleri

İki tür argüman vardır:

  • konumsal argümanlar
  • anahtar sözcük argümanları

 

Python ile Kodlama Mülakatı Soruları Pratiği

Konumsal argümanlar

def func_with_pos_args(arg1, arg2):

    pass
def multiply(x, y):
    return x * y
multiply(2, 3)
6
Python ile Kodlama Mülakatı Soruları Pratiği

*args

def func_with_var_pos_args(*args):

    pass
func_with_var_pos_args(1, 2, 'hello')
Python ile Kodlama Mülakatı Soruları Pratiği

*args

def func_with_var_pos_args(*args):

    print(args)
func_with_var_pos_args(1, 2, 'hello')
(1, 2, 'hello')
Python ile Kodlama Mülakatı Soruları Pratiği

*args

def func_with_var_pos_args(*args):
    for arg in args:
        print(arg)
func_with_var_pos_args(1, 2, 'hello')
1
2
'hello'
Python ile Kodlama Mülakatı Soruları Pratiği

multiply() yeniden tanımlama

def multiply(*args):
    result = 1
    for arg in args:
        result = result * arg
    return result
multiply(1, 2, 3):
6
multiply(1, 2, 3, 4)
24
Python ile Kodlama Mülakatı Soruları Pratiği

multiply() yeniden tanımlama

def multiply(*nums):
    result = 1
    for num in nums:
        result = result * num
    return result
multiply(1, 2, 3):
6
multiply(1, 2, 3, 4)
24
Python ile Kodlama Mülakatı Soruları Pratiği

Tek yıldız * için başka bir kullanım

def multiply(num1, num2, num3):
    return num1 * num2 * num3
multiply(1, 2, 3)
6
Python ile Kodlama Mülakatı Soruları Pratiği

Tek yıldız * için başka bir kullanım

def multiply(num1, num2, num3):
    return num1 * num2 * num3
nums = (2, 3, 4)
multiply(*nums)
24
nums = [2, 3]
multiply(*nums, 4)
24
Python ile Kodlama Mülakatı Soruları Pratiği

Tek yıldız * için başka bir kullanım

def multiply(*args):
    result = 1
    for arg in args:
        result = result * arg
    return result
nums = (2, 3, 4, 5)
multiply(*nums)
120
Python ile Kodlama Mülakatı Soruları Pratiği

Argüman türleri

İki tür argüman vardır:

  • konumsal argümanlar
  • anahtar sözcük argümanları

 

Python ile Kodlama Mülakatı Soruları Pratiği

Anahtar sözcük argümanları

def func_with_kwargs(arg1=1, arg2=2):
def multiply(x=1, y=2):
    print(str(x) + ' : ' + str(y))
multiply(2, 3)
2 : 3
multiply()
1 : 2
Python ile Kodlama Mülakatı Soruları Pratiği

Anahtar sözcük argümanları

def func_with_kwargs(arg1=1, arg2=2):
def multiply(x=1, y=2):
    print(str(x) + " : " + str(y))
multiply(y=5, x=3)
3 : 5
Python ile Kodlama Mülakatı Soruları Pratiği

**kwargs

kwargs - anahtar sözcük argümanları

def func_with_var_kwargs(**kwargs):
    print(kwargs)
func_with_var_kwargs(arg1=1, arg2=2, arg3=3)
{arg1: 1, arg2: 2, arg3: 3}
func_with_var_kwargs(1, arg2=2, arg3=3)
TypeError
Python ile Kodlama Mülakatı Soruları Pratiği

multiply() yeniden tanımlama

def multiply_kwargs(**kwargs):
    result = 1
    for (key, value) in kwargs.items():
        print(key + ' = ' + str(value))
        result = result * value
    return result
def multiply(*args):
    result = 1
    for arg in args:
        result = result * arg
    return result
Python ile Kodlama Mülakatı Soruları Pratiği

multiply_kwargs() çağrısı

multiply_kwargs(num1=1, num2=2, num3=3, num4=4)
num1 = 1
num2 = 2
num3 = 3
num4 = 4
24
Python ile Kodlama Mülakatı Soruları Pratiği

Çift yıldız ** için başka bir kullanım

def multiply(num1=1, num2=2, num3=3):
    print('num1 = ' + str(num1))
    print('num2 = ' + str(num2))
    print('num3 = ' + str(num3))
    return num1 * num2 * num3
multiply()
num1 = 1
num2 = 2
num3 = 3
6
Python ile Kodlama Mülakatı Soruları Pratiği

Çift yıldız ** için başka bir kullanım

def multiply(num1=1, num2=2, num3=3):
    print('num1 = ' + str(num1))
    print('num2 = ' + str(num2))
    print('num3 = ' + str(num3))
    return num1 * num2 * num3
nums = {'num1': 10, 'num2': 20, 'num3': 30}
multiply(**nums)
num1 = 10
num2 = 20
num3 = 30
6000
Python ile Kodlama Mülakatı Soruları Pratiği

Çift yıldız ** için başka bir kullanım

def multiply(num1=1, num2=2, num3=3):
    print('num1 = ' + str(num1))
    print('num2 = ' + str(num2))
    print('num3 = ' + str(num3))
    return num1 * num2 * num3
nums = {'num1': 10, 'num3': 30}
multiply(**nums)
num1 = 10
num2 = 2
num3 = 30
600
Python ile Kodlama Mülakatı Soruları Pratiği

Çift yıldız ** için başka bir kullanım

def multiply(num1=1, num2=2, num3=3):
    print('num1 = ' + str(num1))
    print('num2 = ' + str(num2))
    print('num3 = ' + str(num3))
    return num1 * num2 * num3
nums = {'NUM10': 1, 'num2': 2, 'num3': 3}
multiply(**nums)
TypeError
Python ile Kodlama Mülakatı Soruları Pratiği

Çift yıldız ** için başka bir kullanım

def multiply_kwargs(**kwargs):
    result = 1
    for (key, value) in kwargs.items():
        print(key + ' = ' + str(value))
        result = result * value
    return result
nums = {
    'num1': 2, 'num2': 3,
    'num3': 4, 'num4': 5
}
multiply_kwargs(**nums)
num1 = 2
num2 = 3
num3 = 4
num4 = 5
120
Python ile Kodlama Mülakatı Soruları Pratiği

Argüman sırası

def func(                                           ):
Python ile Kodlama Mülakatı Soruları Pratiği

Argüman sırası

def func(arg1, arg2,                                ):
  • arg1, arg2 - konumsal argümanlar
Python ile Kodlama Mülakatı Soruları Pratiği

Argüman sırası

def func(arg1, arg2, *args,                         ):
  • arg1, arg2 - konumsal argümanlar
  • *args - değişken sayıda konumsal argüman
Python ile Kodlama Mülakatı Soruları Pratiği

Argüman sırası

def func(arg1, arg2, *args, kwarg1, kwarg2,         ):
  • arg1, arg2 - konumsal argümanlar
  • *args - değişken sayıda konumsal argüman
  • kwarg1, kwarg2 - anahtar sözcük argümanları
Python ile Kodlama Mülakatı Soruları Pratiği

Argüman sırası

def func(arg1, arg2, *args, kwarg1, kwarg2, **kwargs):
  • arg1, arg2 - konumsal argümanlar
  • *args - değişken sayıda konumsal argüman
  • kwarg1, kwarg2 - anahtar sözcük argümanları
  • **kwargs - değişken sayıda anahtar sözcük argümanı
def func(arg1, arg2, *args):

def func(arg1, arg2, **kwargs):
def func(*args, **kwargs):
Python ile Kodlama Mülakatı Soruları Pratiği

Ayo berlatih!

Python ile Kodlama Mülakatı Soruları Pratiği

Preparing Video For Download...