Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności:
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: zmiana wartości zmiennych funkcją  (Przeczytany 76 razy)
« : 20:10 12/01/18 »
yezz Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 4


Cześć,
czy istnieje możliwość w Pythonie zmiany wartości zmiennych przy pomocy funkcji?
Kod
a=1
b=2
c=3
 
def function(q,w,e):
   q+=8
   w=q+e
   e=2
 
function(a,b,c)
print(a)
print(b)
print(c)
 
 

zależy mi na tym aby jedna funkcja wykonywała kilkadziesiąt działać i "zwracała" (zmieniała) wartości zmiennych poza nią dlatego nie chce używać return
Zapisane
« Odpowiedz #1 : 20:49 12/01/18 »
DJangoL Offline
Advanced Python User

Zobacz profil
**

Reputacja: 23
Wiadomości: 265


Zobacz słowo kluczowe: global
Zapisane
« Odpowiedz #2 : 02:55 13/01/18 »
Guaz Offline
Advanced Python User

Zobacz profil
**

Reputacja: 30
Płeć: Mężczyzna
Wiadomości: 186


Global mimo wszystko odradzam, potrafi mocno namieszać w przypadku importu.
Zdecydowanie bezpieczniejsza jest słownikowa metoda pseudo-referencji:
https://stackoverflow.com/questions/14323817/global-dictionaries-dont-need-keyword-global-to-modify-them
A najlepsza, to klasa. (ale do tego by pracować na obiektowości każdy spokojnie dojdzie :d, więc póki co zainteresujmy się czymś, co jest zarówno bezpieczne i praktyczne.)

W takim przykładzie wystarczy odpowiednio przekształcić zwracane wartości przez funkcję:
Kod
a=1
b=2
c=3
 
def function(q,w,e):
   q+=8
   w=q+e
   e=2
   return q,w,e
 
a,b,c = function(a,b,c)
print(a)
print(b)
print(c)
 

Oczywiście te metodę można ciągnąć długo do poznania obiektowości, i jest najbezpieczniejsza, nie powodując że nagle coś będzie miało kolizję nazw zmiennych. Ale gdy poznasz strukturę słowników, bardzo dobrze się z nimi zapoznaj, dobre zrozumienie słowników czyni kod pythonowym, zamiast napisanym w pythonie tak jak w każdym innym języku. Co pozwala często na ujęcie nawet kilkudziesięciu linii kodu w trzech (zachowując czytelność, fan boy napisze w jednej a po miesiącu nie rozczyta co sam napisał - tego extremum także nie polecam).
Zapisane

Python 3.5.2 / Mint
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2018 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot