Menu
Coddy logo textTech

*args Kullanımı

Coddy'nin Python Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 42 / 64.

*args parametresi, bir metodun herhangi sayıda konumsal bağımsız değişken kabul etmesini sağlar. Yıldız işareti, tüm ek konumsal bağımsız değişkenleri bir demet içinde toplar.

İşte *args kullanan bir yöntem örneği:

class Calculator:
    def add_numbers(self, *args):
        return sum(args)
    
    def show_numbers(self, *args):
        for i, num in enumerate(args):
            print(f"Number {i+1}: {num}")

Yöntemi farklı sayıda bağımsız değişkenle çağırın:

calc = Calculator()
result1 = calc.add_numbers(1, 2, 3)
result2 = calc.add_numbers(10, 20, 30, 40, 50)
print(result1)  # 6
print(result2)  # 150

*args tüm bağımsız değişkenleri bir demet içinde toplar:

calc.show_numbers(5, 10, 15, 20)

Çıktı:

Number 1: 5
Number 2: 10
Number 3: 15
Number 4: 20

Normal parametreleri *args ile birleştirin:

class Logger:
    def log_message(self, level, *messages):
        print(f"[{level}]", end=" ")
        for message in messages:
            print(message, end=" ")
        print()  # Yeni satır

logger = Logger()
logger.log_message("INFO", "User", "logged", "in")
logger.log_message("ERROR", "Connection", "failed")

Kurucu yöntemlerde *args kullanın:

class Team:
    def __init__(self, team_name, *players):
        self.team_name = team_name
        self.players = list(players)
    
    def show_team(self):
        print(f"Team: {self.team_name}")
        for player in self.players:
            print(f"- {player}")

team = Team("Warriors", "Alice", "Bob", "Charlie", "Diana")
team.show_team()

Çıktı:

6
150
Number 1: 5
Number 2: 10
Number 3: 15
Number 4: 20
[INFO] User logged in 
[ERROR] Connection failed 
Team: Warriors
- Alice
- Bob
- Charlie
- Diana

Metotları çağırırken bağımsız değişkenleri de açabilirsiniz:

numbers = [1, 2, 3, 4, 5]
result = calc.add_numbers(*numbers)  # Listeyi açar
print(result)  # 15

Temel Nokta: *args, herhangi bir sayıda konumsal bağımsız değişkeni bir demet içinde toplar. Bir metoda kaç bağımsız değişken geçirileceğini bilmediğinizde bunu kullanın. args adı gelenekseldir; yıldız işaretinden sonra herhangi bir ad kullanabilirsiniz, ancak args standarttır.

challenge icon

Görev

Kolay

Bu mücadelede esnek bir sayı yardımcı fonksiyonu uygulayacaksın.

number_utils.py dosyasını düzenleyerek, herhangi sayıda sayısal bağımsız değişken kabul eden ve bunların toplamını döndüren sum_all_numbers fonksiyonunu uygula. Fonksiyon şunları yapmalıdır:

  • Hiç bağımsız değişken sağlanmazsa 0 döndürmeli
  • Sayısal olmayan bağımsız değişkenlerden herhangi biri sağlanırsa "Error: All arguments must be numbers" yazdırmalı ve None döndürmeli
  • Boolean değerler (True / False) burada sayı olarak kabul edilmez ve bool sınıfı int sınıfının bir alt sınıfı olsa bile reddedilmelidir

number_utils.py dosyası, uygulamanı yönlendirmek için ayrıntılı TODO yorumları içerir. Çözümünün tüm gereksinimleri karşıladığından emin olmak için bu yorumları dikkatle takip et.

Kendin dene

from number_utils import sum_all_numbers

# Kapsamlı test durumu işleyicisi
test_case = input()

if test_case == "basic_test":
    # Pozitif tamsayılarla temel işlevselliği test et
    print(sum_all_numbers(1, 2, 3))  # 6 döndürmeli
    print(sum_all_numbers())  # 0 döndürmeli
    print(sum_all_numbers(10, 20, 30, 40))  # 100 döndürmeli
    print(sum_all_numbers(1, 2, "three"))  # Hata yazdırmalı ve None döndürmeli

elif test_case == "float_test":
    # Kayan noktalı sayılarla test et
    print(sum_all_numbers(1.1, 2.2, 3.3))  # 6.6 döndürmeli
    print(sum_all_numbers(5.5, 5.0))  # 10.5 döndürmeli

elif test_case == "mixed_numbers_test":
    # Tamsayılar ve kayan noktalı sayıların bir karışımıyla test et
    print(sum_all_numbers(5, 5.5))  # 10.5 döndürmeli
    print(sum_all_numbers(10, 20.5, 30, 40))  # 100.5 döndürmeli

elif test_case == "zero_values_test":
    # Sıfır değerlerle test et
    print(sum_all_numbers(0, 0, 0))  # 0 döndürmeli
    print(sum_all_numbers(0))  # 0 döndürmeli
    print(sum_all_numbers())  # 0 döndürmeli

elif test_case == "negative_values_test":
    # Negatif değerlerle test
    print(sum_all_numbers(-1, -2, -3))  # -6 döndürmeli
    print(sum_all_numbers(-5, -5))  # -10 döndürmeli
    print(sum_all_numbers(-5, 5))  # 0 döndürmeli

elif test_case == "large_values_test":
    # Çok büyük değerlerle test
    print(sum_all_numbers(1000000000, 1000000000))  # 2000000000 döndürmeli
    print(sum_all_numbers(1000000000, 2000000000.5))  # 3000000000.5 döndürmeli

elif test_case == "single_value_test":
    # Tek bir değerle test
    print(sum_all_numbers(5))  # 5 döndürmeli
    print(sum_all_numbers(-10))  # -10 döndürmeli
    print(sum_all_numbers(3.5))  # 3.5 döndürmeli

elif test_case == "error_handling_test":
    # Çeşitli sayısal olmayan değerlerle test
    print(sum_all_numbers("string"))  # Hata yazdırmalı ve None döndürmeli
    print(sum_all_numbers([1, 2, 3]))  # Hata yazdırmalı ve None döndürmeli
    print(sum_all_numbers({"key": "value"}))  # Hata yazdırmalı ve None döndürmeli
    print(sum_all_numbers(True))  # Hata yazdırmalı ve None döndürmeli
    print(sum_all_numbers(None))  # Hata yazdırmalı ve None döndürmeli

elif test_case == "mixed_valid_invalid_test":
    # Geçerli ve geçersiz değerlerin bir karışımıyla test
    print(sum_all_numbers(1, 2, "three"))  # Hata yazdırmalı ve None döndürmeli
    print(sum_all_numbers(1, [2, 3], 4))  # Hata yazdırmalı ve None döndürmeli
    print(sum_all_numbers(1.5, "two", 3))  # Hata yazdırmalı ve None döndürmeli

elif test_case == "empty_args_test":
    # Argümansız test
    print(sum_all_numbers())  # 0 döndürmeli
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi