Prośba początkującego o wyjaśnienie: przypisywanie nazw

Prośba początkującego o wyjaśnienie: przypisywanie nazw
CR
  • Rejestracja:prawie 7 lat
  • Ostatnio:10 miesięcy
  • Postów:92
0

Witam serdecznie użytkowników forum. Czytam sobie książeczkę pt. „Hello world. Przygoda z programowaniem dla dzieci i absolutnie początkujących i natknąłem się na takie wyjaśnienie:
„tę samą wartość możesz przypisać do kilku nazw-jedna rzecz może mieć kilka nazw:”

Kopiuj
my_teacher=”Mrs Smith”
your_teacher=my_teacher
print(my_teacher)
print(your_teacher)

„To tak, jakby przypiąć dwie etykiety do jednej rzeczy. Na jednej etykiecie będzie napis: your_ teacher, an na drugiej napis: my_teacher, ale obie będą przypięte do etykiety Mrs Smith.”

Trochę się zamotałem. Czy nie powinny być dwie osobne etykiety Mrs Smith a nie jedna.
Np,:

Kopiuj
my_teacher=”Mrs Smith”
your_teacher=”Mrs Smith”
print(my_teacher)
print(your_teacher)

Zapewne niezbyt dobrze zarysowałem problem, ale może ktoś pomoże mi zrozumieć ten banalny problem. Z góry dziękuję i pozdrawiam Krzysztof:)

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4884
0

Nie, nie powinny być, po prostu, do dwu różnych zmiennych Przypisłeś tą samą wartość, co w tym dziwnego?


CD
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
  • Postów:20
1

Obydwa przypadki są równoważne dla tego prostego przykładu. Pierwszy przypadek ma jednak zaletę w postaci braku duplikacji deklaracji wartości "rzeczy" (zmiennej). Jeżeli w przyszłości będziemy musieli zmodyfikować kod i zastąpić "Mrs Smith" na "Mrs Jones", w pierwszym przypadku będziemy musieli zmodyfikować jedną linię kodu, a w drugim przypadku dwie. Jeżeli dodatkowo linia "your_teacher=..." jest oddalona od "my_teacher=...", to w drugim przypadku łatwiej o popełnienie blędu (zostawienie starej wartości).

edytowany 1x, ostatnio: CaliforniaDreaming
Silv
Choć to chyba nie odpowiada na pytanie @crispia, to warto dodać, że w bardziej skomplikowanych przypadkach zmienne mogą być przypisywane więcej niż raz i występować w różnych plikach.
CR
  • Rejestracja:prawie 7 lat
  • Ostatnio:10 miesięcy
  • Postów:92
0

Bardzo dziękuję za odpowiedzi. Poniżej link do anglojęzycznej wersji książki z której zaczerpnąłem przykład. ( posiadam polską z Helionu).

http://home.ustc.edu.cn/~ustcsh/py2016/data/Warren%20Sande,%20Carter%20Sande-Hello%20World!_%20Computer%20Programming%20for%20Kids%20and%20Other%20Beginners-Manning%20Publications.pdf

Na stronie 21 (46 z 490) znajduje się ilustracja przedstawiająca tą samą wartość przypisaną do dwóch różnych zmiennych. To ta ilustracja wywołała moje wątpliwości. Rozumiem że do dwóch różnych zmiennych można przypisać tę samą wartość, ale czy na schemacie nie powinny być dwie etykiety Mrs Goodyear.W pamięci rezerwowane są chyba dwie „szufladki”- jedna dla zmiennej moja nauczycielka, druga twoja nauczycielka. Stąd wykombinowałem że powinny być dwie etykiety mrs goodyear.

CD
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
  • Postów:20
0

Ilość "szufladek" w których Python przechowuje dane to "implementation detail". Python potrafi rozpoznać które zmienne są typu "immutable" (nie można zmienić zawartości "szufladki") i wykorzystać ten sam obszar pamięci do przechowywania danych niezależnych zmiennych, jeżeli ich wartość jest taka sama:

Kopiuj
>>> x = "a"
>>> y = "a"
>>> id(x)
139994499557616
>>> id(y)
139994499557616
>>>
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:2 minuty
  • Postów:6627
0

@CaliforniaDreaming:
Dla zbyt dużych stringów, id nie będzie takie same...

Kopiuj
>>> x = "123456789abcdefghijklmnfjlsdmad jgnsdkldaklmgjklofiopdasjogdfiojdas iojgiopftioskfi0dfgiojkdiofsdiokioasi dklasfmklsmklfmsdkl mfsdklmfklsdmfklsdmklfmsdklfm sdklfmkldsmfklsdmfklsdmfklsdm kldsmklfdmsfklmsdfklmsd klfmsdklmfsdklmfkldsmklfm sdklmklsdmfklsdmfklsdmfkldsmfkl sdmfklmsdklfmsdklfmsdklmfklsdmfklsd mfklsdmfklsdmfklsdmfklmsdklmfklsdmf ksdlmdsklmfsdklfmklsdmfklmsd"
>>> y = "123456789abcdefghijklmnfjlsdmad jgnsdkldaklmgjklofiopdasjogdfiojdas iojgiopftioskfi0dfgiojkdiofsdiokioasi dklasfmklsmklfmsdkl mfsdklmfklsdmfklsdmklfmsdklfm sdklfmkldsmfklsdmfklsdmfklsdm kldsmklfdmsfklmsdfklmsd klfmsdklmfsdklmfkldsmklfm sdklmklsdmfklsdmfklsdmfkldsmfkl sdmfklmsdklfmsdklfmsdklmfklsdmfklsd mfklsdmfklsdmfklsdmfklmsdklmfklsdmf ksdlmdsklmfsdklfmklsdmfklmsd"
>>> id(x)
10370208
>>> id(y)
20025776
>>> y = x
>>> id(y)
10370208

@crispia:
Dla stringów to ma małe znaczenie, bo nie można ich zmieniać. Każda modyfikacja tworzy nowy obiekt.
Gdybyś użył np. listy do przechowywania tego stringa, to zmiana stringa wewnątrz tej listy zmieni go wszędzie, gdzie ta lista jest przypisana.

Kopiuj
my_teacher=["Mrs Smith"]
your_teacher=my_teacher
print(my_teacher[0]) # wypisze: Mrs Smith
print(your_teacher[0]) # wypisze: Mrs Smith

your_teacher[0] = "Mr Wayne"
print(my_teacher[0]) # wypisze: Mr Wayne
print(your_teacher[0]) # wypisze: Mr Wayne

🕹️⌨️🖥️🖱️🎮
edytowany 4x, ostatnio: Spine
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)