Python - "None" na wyjściu niektórych funkcji


(Withorlo2) #1

Zacząłem się uczyć podstaw Pythona i mam problem bo wszystko działa inaczej niż w językach, w których pisałem wcześniej(c,c++,pascal itp.) co nie znaczy że mniej mi się podoba ale trudniej się przestawić. Mam taki oto kodzik:

lista = string.split(';')

print( lista )

print( lista.append('E') )

Na pierwszym wyjściu mam swoją nowo utworzoną listę ['A', 'C', 'B', 'D'] a na drugim napis None, tak jest nie tylko z funkcją append() ale np. też z funkcją sort().

Znalazłem w dokumentacji Pythona takie objaśnienie:

I nie wiem jak mam to rozumieć, tzn. rozumiem co tutaj jest napisane ale w takim razie nie potrafię pojąć po co mi te funkcje skoro nie mogę wyświetlić ich wyniku.

Proszę o oświecenie :smiley:


(Frankfurterium) #2
lista = string.split(';')

lista = lista.append('E')

print( lista )

(etam) #3

@Frankfurterium - błąd w drugiej linii

lista = string.split(';')

lista.append('E')

print( lista )

Metoda append modyfikuję listę i zwraca None.


(Krystian Rosinski) #4

Te funkcje nie służą do wyświetlania wyników, tylko do zmiany obiektu. Zgodnie z dokumentacją zwracają None. Na dole jest przypis, który wyjaśnia różnicę między niektórymi językami programowania:

Każda funkcja / metoda w Pythonie zwraca "coś". Jeśli nie zwraca nic konkretnego (brak słowa return lub występuje samo słowo return, które mówi, że w tym miejscu następuje wyjście z funkcji) to domyślnie zwraca None.

Przykład:

>>> def aaa(x):

	x += 1


>>> a = aaa(3)

>>> a

>>> a

>>> print(a)

None


>>> import math

>>> def bbb(x):

	if x < 0:

		return

	else:

		return math.sqrt(x)


>>> b = bbb(-1)

>>> b

>>> print(b)

None

>>> b = bbb(9)

>>> b

3.0

>>> print(b)

3.0