Zgodnie z tym wizualizatorem kodu w języku Python ciągi znaków w języku Python są przydzielane na stosie, a nie na stosie.
Dlaczego to? Myślałem, że będą podobne do Javy, gdzie ciągi są przydzielane na stercie.
Zgodnie z tym wizualizatorem kodu w języku Python ciągi znaków w języku Python są przydzielane na stosie, a nie na stosie.
Dlaczego to? Myślałem, że będą podobne do Javy, gdzie ciągi są przydzielane na stercie.
Ten wizualizator nie pokazuje danych ciągu na stosie. Pokazuje lokalne odwołania do danych sterty jako część stosu wywołań. Jest to bardzo podobne do Javy, gdzie String
odwołania są lokalnymi zmiennymi wskazującymi rzeczywiste String
obiekty na stercie.
Wizualizator może dowolnie upraszczać reprezentację, na której zależy. Nie oznacza to, że „ciągi Pythona są przydzielane na stosie” w dowolnej implementacji Pythona.
Greg powiedział w swojej odpowiedzi, że łańcuchy są przydzielane na stercie.
Wizualizator wybrał wyświetlanie niektórych obiektów w części „kadrowej”, co wydaje mi się niewłaściwe. Na szczęście nie ma to większego wpływu na osobę uczącą się języka Python, ponieważ obiekty, których dotyczy problem (int, string), są niezmienne. Dlatego rozumowanie efektów jest nadal możliwe.
Jednak daje fałszywe wrażenie, że ciągi są duplikowane w pamięci podczas wykonywania takich czynności, jak:
x = "hello"
y = x