Uczę matematyków 8- 9 podstawowych programów komputerowych przez dwa tygodnie, a wczoraj próbowałem pokazać im, jak mogą tworzyć prawdziwe proste przygodowe gry tekstowe w Pythonie.Unikaj używania globalnego, nie myląc nowych studentów programowania w Pythonie?
Sceny są funkcje (np dragons_cave()
), które składają się z niektórych stwierdzeń druku, a następnie wezwanie do input()
, prosząc odtwarzacza gdzie chcą iść dalej, który następnie zostaje przekazana do globals()
aby znaleźć odpowiednią funkcję, a następnie tzw. Wiem, że to nie jest idealne (w którym momencie ogromny łańcuch funkcji zaczynałby stawać się problemem?), Ale z tego, co przeszło mi przez myśl, wydaje się być dla nich najprostszy, przy jednoczesnym niewielkim handwavingu.
Mój problem dotyczy stanu globalnego - np. gracz otrzymuje klucz w jednej scenie i tylko wtedy może odblokować bramę w innej scenie. Kiedy mam globalne niezmienne, takie jak łańcuchy lub booleany, Python chce, abym użył słowa kluczowego global
na początku funkcji.
global hasKey
hasKey = True
jestem całkiem w porządku z tym, ale mam niejasne poczucie (odebrał od Stackoverflow wśród innych miejsc w Internecie), który global
jest mile widziana i zawsze ma wyższą odpowiednika. Mógłbym mieć słownik globalny lub zawinąć wszystko w klasie, ale nie jestem pewien, czy mógłbym bronić tych opcji wyraźnie moim dzieciom (które wciąż zastanawiają się nad implikacjami zmiennych).
Niezależnie od tego, czego używam, chcę móc wyjaśnić bezpośrednio moim dzieciom, dlaczego robimy to w ten sposób i dlaczego należy to robić w ten sposób. global
wydaje się mieć obie te właściwości, ale czy to jest złe?
Istnieje wiele dobrych powodów, aby uniknąć globalnego, istnieje również wiele doskonałych powodów, aby korzystać z globali. tylko moje 2c ... dla początkujących jest to łatwiejsza do zrozumienia koncepcja, ale może prowadzić do złych nawyków w przyszłości. –
Chciałbym zagłosować, po prostu uczciwie i z góry o tym. "Kiedy stajesz się bardziej doświadczonym programistą, dowiesz się, że istnieją lepsze metody niż używanie globaliów, na razie pomaga nam to zachować prostotę, podczas gdy uczymy się podstaw.Jeśli chcesz dowiedzieć się, jak to zrobić bez globali, zapytaj mnie po lekcji. "Niewiele osób, które znam, nauczyło się chodzić w obuwiu." –