0Pricing
Python Academy · Lekcja

Podkomendy i opcje

Buduj złożone interfejsy CLI

Podkomendy i opcje to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Dlaczego podkomendy?

Narzędzia takie jak git mają podkomendy: git add, git commit. argparse obsługuje je za pomocą subparserów, z których każda podkomenda ma własne argumenty.

import argparse

parser = argparse.ArgumentParser(prog='tool')
sub = parser.add_subparsers(dest='command')
print('subparsers ready')

Dodawanie subparserów

add_subparsers zwraca obiekt, którego metoda add_parser tworzy poszczególne podkomendy. Parametr dest przechowuje informację o wybranej podkomendzie.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
sub.add_parser('start')
sub.add_parser('stop')
args = parser.parse_args(['start'])
print('command:', args.command)

Argumenty poszczególnych podkomend

Każdy subparser może definiować własne argumenty. Podkomenda add w tym przykładzie przyjmuje nazwę, natomiast list nie przyjmuje żadnych argumentów.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('name')
sub.add_parser('list')
args = parser.parse_args(['add', 'milk'])
print(args.command, args.name)

Wybór działania na podstawie polecenia

Po przeanalizowaniu argumentów należy sprawdzić wartość args.command, aby uruchomić właściwą logikę.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('item')
sub.add_parser('clear')

args = parser.parse_args(['add', 'eggs'])
if args.command == 'add':
    print('adding', args.item)
elif args.command == 'clear':
    print('clearing all')

set_defaults dla funkcji obsługi

Przejrzysty wzorzec polega na przypisaniu funkcji do każdego subparsera za pomocą set_defaults(func=...), a następnie wywołaniu args.func(args).

import argparse

def do_hi(args):
    print('hi', args.who)

parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
p = sub.add_parser('hi')
p.add_argument('who')
p.set_defaults(func=do_hi)

args = parser.parse_args(['hi', 'Ana'])
args.func(args)

Wspólne opcje za pomocą parserów nadrzędnych

Parser nadrzędny przechowuje opcje wspólne dla kilku podkomend, dzięki czemu nie trzeba ich powtarzać. Należy przekazać parents=[base] i add_help=False.

import argparse

base = argparse.ArgumentParser(add_help=False)
base.add_argument('--verbose', action='store_true')

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
sub.add_parser('run', parents=[base])
args = parser.parse_args(['run', '--verbose'])
print(args.cmd, args.verbose)

Domyślne wartości poszczególnych opcji

Opcje podkomend mogą mieć własne wartości domyślne i typy, podobnie jak argumenty najwyższego poziomu.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
p = sub.add_parser('scale')
p.add_argument('--factor', type=float, default=1.0)
args = parser.parse_args(['scale'])
print('factor:', args.factor)

Dodawanie powtarzanych opcji

action='append' pozwala podać flagę wiele razy, zapisując każdą wartość na liście.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--tag', action='append', default=[])
args = parser.parse_args(['--tag', 'a', '--tag', 'b'])
print(args.tag)

Zliczanie flag

action='count' zlicza, ile razy pojawia się flaga. Jest to klasyczny wzorzec zwiększania szczegółowości, na przykład -vvv.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-v', action='count', default=0)
args = parser.parse_args(['-v', '-v', '-v'])
print('verbosity level:', args.v)

Narzędzie z dwiema podkomendami

Połączenie podkomend, funkcji obsługi i wspólnych opcji pozwala utworzyć uporządkowany interfejs wiersza poleceń z wieloma poleceniami.

import argparse

def add(args):
    print('add', args.item, 'qty', args.qty)

def remove(args):
    print('remove', args.item)

parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
pa = sub.add_parser('add')
pa.add_argument('item')
pa.add_argument('--qty', type=int, default=1)
pa.set_defaults(func=add)
pr = sub.add_parser('remove')
pr.add_argument('item')
pr.set_defaults(func=remove)

args = parser.parse_args(['add', 'pen', '--qty', '3'])
args.func(args)

Wymagana podkomenda

Należy ustawić required=True dla subparserów, aby użytkownik musiał wybrać polecenie. W przeciwnym razie argparse zgłosi błąd.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd', required=True)
sub.add_parser('go')
args = parser.parse_args(['go'])
print('chosen:', args.cmd)

Szybki sprawdzian

Sprawdź swoje zrozumienie podkomend i opcji.

Podsumowanie

Poznałeś podkomendy i opcje:

  • add_subparsers i add_parser służą do tworzenia narzędzi z wieloma poleceniami.
  • set_defaults(func=...) kieruje wykonanie do funkcji obsługi.
  • Parsery nadrzędne udostępniają wspólne opcje.
  • Operacje append i count obsługują powtarzane flagi.

Następny temat: biblioteka Click do tworzenia interfejsów wiersza poleceń za pomocą dekoratorów.

Często zadawane pytania

Czy lekcja „Podkomendy i opcje” jest bezpłatna?

Tak — pełny tekst „Podkomendy i opcje” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podkomendy i opcje”?

Buduj złożone interfejsy CLI Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Podkomendy i opcje”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podstawy argparse
  2. Podkomendy i opcje
  3. Biblioteka Click
  4. Bogate dane wyjściowe terminala
← Powrót do Python Academy