Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Programmierung: Grundlegende Richtlinien zu Funktionsrückgabewerten und Best Practices

Python-Programmierung: Grundlegende Richtlinien zu Funktionsrückgabewerten und Best Practices

王林
王林nach vorne
2023-04-10 11:31:051649Durchsuche

Dieser Artikel ist der letzte Artikel zum Thema Funktionen. Er stellt Funktionsrückgabewerte und einige grundlegende Best-Practice-Richtlinien zum Schreiben von Funktionen vor.

Funktionsausgabe: Rückgabewert

Der Rückgabewert einer Funktion ist eines der Dinge, die Python von seinen Konkurrenten abheben. In den meisten anderen Sprachen dürfen Funktionen normalerweise nur ein Objekt zurückgeben, aber in Python können Sie ein Tupel zurückgeben – was bedeutet, dass alles, was Sie wollen, zurückgegeben werden kann. Mit dieser Funktion können Programmierer Software schreiben, die in anderen Sprachen viel schwieriger oder auf jeden Fall mühsamer zu schreiben ist. Wir haben gesagt, dass wir, um etwas von einer Funktion zurückzugeben, die Return-Anweisung verwenden müssen, gefolgt von dem, was wir zurückgeben möchten. Der Funktionskörper kann je nach Bedarf mehrere Return-Anweisungen enthalten.

Wenn wir andererseits im Funktionskörper nichts zurückgeben oder eine „nackte“ Return-Anweisung aufrufen, gibt die Funktion None zurück. Dieses Verhalten ist harmlos, wenn es nicht benötigt wird, aber es ermöglicht Ihnen auch, einige interessante Muster auszuarbeiten, was bestätigt, dass Python eine sehr konsistente Sprache ist.

Wir sagen, es ist harmlos, weil Sie nie gezwungen sind, die Ergebnisse eines Funktionsaufrufs zu sammeln. Im Folgenden wird Ihnen anhand eines Beispiels gezeigt, was es bedeutet:

# 返回none值
def func():
pass

func() # 这个调用是没有接收的,将丢失
a = func() # 这个调用被a接收
print(a) # prints: None

Beachten Sie, dass der gesamte Funktionskörper nur aus Pass-Anweisungen besteht. Wie aus der offiziellen Dokumentation hervorgeht, ist pass ein No-Op, da bei der Ausführung nichts passiert. Es ist als Platzhalter nützlich, wenn eine Anweisung syntaktisch erforderlich ist, aber keine Ausführung des Codes erfordert. In anderen Sprachen drücken wir dies möglicherweise einfach mit einem Paar geschweifter Klammern ({}) aus, wodurch ein leerer Bereich definiert wird. In Python werden Bereiche jedoch durch eingerückten Code definiert, sodass Anweisungen wie „pass“ erforderlich sind.

Beachten Sie außerdem, dass der erste Aufruf von func() einen Wert zurückgibt, der nicht empfangen wurde (None). Wie bereits erwähnt, ist es nicht erforderlich, den Rückgabewert eines Funktionsaufrufs zu erhalten.

Das ist gut, aber nicht sehr interessant. Wie wäre es, wenn wir eine lustige Funktion schreiben würden? Erinnern Sie sich, dass wir die Fakultätsfunktion besprochen haben? Schreiben wir hier unsere eigene Implementierung (der Einfachheit halber gehen wir davon aus, dass die Funktion immer korrekt mit den entsprechenden Werten aufgerufen wird, sodass wir die Eingabeparameter nicht überprüfen müssen):

# 阶乘函数,返回单个值
def factorial(n):
if n in (0, 1):
return 1
result = n
for k in range(2, n):
result *= k
return result

f5 = factorial(5) # f5 = 120

Beachten Sie, dass wir haben zwei Rückkehrpunkt. Wenn n 0 oder 1 ist, wird 1 zurückgegeben. Andernfalls führen wir die erforderlichen Berechnungen durch und geben das Ergebnis zurück.

Tipp: In Python ist es üblich, den in-Operator zur Elementprüfung zu verwenden, wie wir es im vorherigen Beispiel getan haben, und nicht die ausführlichere Prüfung: #🎜 🎜##🎜 🎜#wenn n == 0 oder n == 1:

Versuchen Sie nun, diese Funktion prägnanter zu schreiben:
# 返回单个值示例.2
from functools import reduce
from operator import mul

def factorial2(n):
return reduce(mul, range(1, n + 1), 1)

f5 = factorial(5) # f5 = 120
#🎜 🎜#Dieses einfache Beispiel zeigt, wie Python sowohl elegant als auch prägnant sein kann. Diese Implementierung ist lesbar, auch wenn wir noch nie Reduce() oder Mul() gesehen haben. Wenn Sie es nicht lesen oder verstehen können, nehmen Sie sich ein paar Minuten Zeit und recherchieren Sie in der Python-Dokumentation, bis Sie sein Verhalten verstehen. In der Lage zu sein, Funktionen in der Dokumentation zu finden und von anderen geschriebenen Code zu verstehen, sind Aufgaben, die jeder Entwickler ausführen können muss, also machen Sie es zu einer Herausforderung.

Tipp: Erfahren Sie, wie Sie die mit Python gelieferte Hilfe anzeigen. Achten Sie darauf, nach der Funktion help() zu suchen, die beim Erkunden mit der Konsole sehr nützlich ist.

Mehrere Werte zurückgeben

Wie wir bereits erwähnt haben, macht es Python im Gegensatz zu den meisten anderen Sprachen sehr einfach, mehrere Objekte von einer Funktion zurückzugeben. Diese Funktion eröffnet endlose Möglichkeiten und ermöglicht es Ihnen, in einem Stil zu programmieren, der in anderen Sprachen nur schwer zu reproduzieren ist. Unser Denken wird durch die Werkzeuge, die wir verwenden, begrenzt. Wenn Python Ihnen also mehr Freiheiten bietet als andere Sprachen, fördert es Ihre kreativen Fähigkeiten.

Die Rückgabe mehrerer Werte ist sehr einfach: Verwenden Sie einfach Tupel (explizit oder implizit). Schauen wir uns ein einfaches Beispiel an, das die integrierte Funktion divmod() nachahmt:

# 返回多个值
def moddiv(a, b):
return a // b, a % b

print(moddiv(20, 7)) # prints (2, 6)

Wir könnten den fett gedruckten Teil des vorherigen Codes in Klammern setzen, um daraus ein explizites Tupel zu machen, aber das ist nicht nötig Mach das. Die obige Funktion gibt sowohl das Ergebnis der Division als auch den Rest zurück.

Hilfreiche Ratschläge zu Funktionen

Beim Schreiben von Funktionen ist es sehr nützlich, einige Best-Practice-Richtlinien zu befolgen, damit Sie sie gut schreiben können. Werfen wir einen Blick auf diese Richtlinien, damit Sie die Funktionen besser verstehen und anwenden können.

1) Eine Funktion sollte nur eine Sache tun

Eine Funktion, die eine Sache tut, lässt sich leicht in einem Satz beschreiben. Funktionen, die mehrere Aufgaben ausführen, können in kleinere Funktionen umgestaltet werden, die eine Aufgabe ausführen. Diese kleineren Funktionen sind im Allgemeinen leichter zu lesen und zu verstehen.

2) Funktionen sollten klein sein

Je kleiner sie sind, desto einfacher ist es, sie zu testen und zu schreiben, sodass sie fokussierter sind Mach einfach eine Sache.

3) Je weniger Eingabeparameter, desto besser

Funktionen, die eine große Anzahl von Parametern akzeptieren, werden (neben anderen Problemen) schnell unüberschaubar. Wenn weitere Eingabeparameter erforderlich sind, ziehen Sie dies in Betracht, z. B. eine Umgestaltung in Klassenobjekte oder andere zusammengesetzte Daten.

4) Der Rückgabewert der Funktion sollte konsistent sein

Return False und Return None sind nicht dasselbe, auch nicht in einem Booleschen Wert Kontext, ihre Die Werte sind alle falsch. „Falsch“ bedeutet, dass wir Informationen haben (d. h. „Falsch“), während „Keine“ bedeutet, dass keine Informationen vorliegen. Schreiben Sie nach Möglichkeit Funktionen, die unabhängig von den Vorgängen in ihrer Logik konsistent zurückkehren.

5)函数不应该有副作用

换句话说,函数不应该影响调用它们的值。这可能是目前最难理解的一条实践性原则,所以这里给出一个使用列表的示例。在下面的代码中,注意如何不使用sorted()函数对numbers进行排序,该函数实际上返回的是已排序的数字副本。相反,list.sort()方法作用于numbers对象本身,这很好,因为它是一个方法(属于对象的函数,因此有权修改它):

>>> numbers = [4, 1, 7, 5]
>>> sorted(numbers) # 不会排序原始的'numbers' 数字列表
[1, 4, 5, 7]
>>> numbers # 验证一下
[4, 1, 7, 5] # 很好,没有改变原始数据对象
>>> numbers.sort() # 这将实质性影响原始列表
>>> numbers
[1, 4, 5, 7]

所以,遵循以上这些常规的基本指导原则,将有益于你写出更好的函数,为你实现更好的服务。

本文小结

到此关于Python函数的主体性知识就介绍完了——函数定义语法、输入参数定义以及相关规则、返回值实现和多返回值等,并简单总结了基于最佳实践的一些有益基本指导原则。请多加练习和体会,以便更好的理解和掌握作为Python的核心特性之一的函数。

Das obige ist der detaillierte Inhalt vonPython-Programmierung: Grundlegende Richtlinien zu Funktionsrückgabewerten und Best Practices. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen