2013-03-12 21 views
16

Biorąc pod uwagę ten przykład funkcji:W python, jeśli funkcja nie ma instrukcji return, co zwraca?

def writeFile(listLine,fileName): 
    '''put a list of str-line into a file named fileName''' 
    with open(fileName,'a',encoding = 'utf-8') as f: 
     for line in listLine: 
      f.writelines(line+'\r\n') 
    return True 

Czy to return True oświadczenie zrobić coś pożytecznego?

Jaka jest różnica między tym i bez niego? Co by się stało, gdyby nie było funkcji zwrotu?

+0

Funkcja zawsze zwróci "True" lub zgłosi błąd, więc 'return' nie jest tutaj zbyt użyteczny. – Blender

+0

dziękuję! i te twoje odpowiedzi zainspirowały mnie bardzo, myślę, że zapytam więcej o stackoverflow i również zrobię co mogę. –

+1

FYI, 'f.writelines (linia + '\ r \ n')' działa, ale jest niesamowicie nieekonomiczny; traktuje argument jako sekwencję i wypisuje każdy element; 'str' to iterables ich znaków, więc jest to efektywne' pisanie 'każdego znaku osobno (buforowanie oszczędza przed rzeczywistym obciążeniem wywołanym przez system, ale wciąż jest o wiele więcej pracy). 'f.write (linia + '\ r \ n')' uzyskałby ten sam wynik i zapisał jako blok, a nie znak po znaku. – ShadowRanger

Odpowiedz

23

Jeśli funkcja nie określa wartości zwracanej, zwraca None.

W przypadku wyrażenia warunkowego jeśli/to, None ma wartość Fałsz. Tak więc teoretycznie można sprawdzić wartość zwracaną tej funkcji dla sukcesu/niepowodzenia. Mówię "w teorii", ponieważ dla kodu w tym pytaniu funkcja nie chwyta wyjątków i nie wymaga ich dodatkowego utwardzania.

+1

+1 za wyjaśnienie, że Brak jest równy Fałszowi pod względem wartości prawdy. –

+0

Przykro mi, jestem tylko początkujący, będę dbać, gdy funkcja wymaga obsługi wyjątku. Po drodze, testowałem, że jeśli nic nie zwrócę, to zwróci None.thanks –

1

Funkcja zawsze zwraca None, jeśli nie podano wyraźnego return.

0

Jeśli masz return True na końcu funkcji, można powiedzieć rzeczy jak: a=writeFile(blah, blah)

Jednakże, ponieważ zawsze będzie True, jest całkowicie pozbawione sensu. Byłoby lepiej, aby powrócić Prawda jeśli plik został napisany poprawnie, itp

Jeśli wyraźnie nie zwraca niczego, wartość będzie None

+0

dzięki za odpowiedź ur –

+0

Myślę, że to robi w rzeczywistości zwraca tylko True, jeśli plik został zapisany poprawnie. – Robert

0

to nie ma sensu mieć return na własny bez przypisywania lub sprawdzania funkcjonalności.

Python zwraca Brak, jeśli nic nie jest zwracane. W twoim przypadku powinieneś zwrócić wartość true, jeśli otwierany plik i pisanie się powiedzie

+0

dzięki za odpowiedź. Czuję się świetnie, gdy mogę uzyskać pomoc z odległości tysięcy mil. –

Powiązane problemy