Denna artikel kommer att hjälpa läsaren att fortsätta från den tidigare bloggen om Python-funktioner tillsammans med några grundläggande tillämpningar i verkliga livet. Vi kommer att använda Visual Studio Code som vår kodredigerare. Om du inte har installerat Visual Studio Code, ges instruktionerna i den första bloggen.
Som diskuterats i den tidigare bloggen, behandlas funktioner i Python som objekt. Så som objekt i Python kan funktioner också överföras som ett argument till en annan funktion.
Till exempel:
def mul(x, y): return x*y def add(mul, y): return mul+y x = add(mul(9, 10), 10) print(x)
I den ovanstående kodblocket kan man se att mul-funktionen överförs som ett argument till add-funktionen och lagras i variabeln x som sedan skrivs ut för att verifiera svaret.
100
I Python kan vi definiera en funktion inuti en annan funktion. Dessa funktioner kallas för nästlade funktioner. Men i detta användningsfall kan den inre funktionen eller nästlade funktionen inte anropas separat. Båda exemplen illustreras i följande kodblock.
Låt oss skriva vår första funktion.
def mul(x, y): m = x*y def square(m): return m*m return square(m) x = mul(9, 10) print(x)
Output: 8100
I den ovanstående kodblocket är den yttre funktionen “mul” som returnerar funktionen square som tar ett argument “m” som är produkten av de två argumenten som ges till “mul”-funktionen. Kodexekveringen börjar först med att anropa “mul”-funktionen, sedan lagras produkten av “x” och “y” i variabeln “m”. Eftersom denna funktion returnerar square-funktionen, anropas “square”-funktionen och den slutliga produkten som är kvadraten av “m” returneras.
Låt oss lära oss några viktiga saker i Python, som kommer att göra din kodningsresa med Python mycket bättre.
Dessa är argumenten som vi använder som funktionsparametrar. Låt oss skriva en vanlig funktion med vad vi har lärt oss hittills. Vi kommer att skriva en funktion som kan ge oss den maximala arean av en rektangel givet 2 rektangelområden som parametrar till funktionen.
def maxarea(a, b): if a > b: return f'rektangel a har den större arean som är {a}' else: return f'rektangel a har den större arean som är {b}' x = maxarea(100, 60) print(x)
Output: rektangel a har den större arean som är 100 [code lang="js"]
Denna funktion är bra för 2 parametrar eller argument, men vad händer om vi behöver jämföra mer än 2 områden. Ett tillvägagångssätt skulle vara att överföra en lista med områden till funktionen.
def maxarea(lis): max = 0 for i in lis: if i > max: max = i return f"rektangel som har den större arean är {max}" x = maxarea([100, 60, 50]) print(x)
Output: rektangel som har den större arean är 100
Detta tillvägagångssätt är bra, men vi bör veta antalet parametrar eller argument att ge i förväg. I verklig kodexekvering skulle detta vara besvärligt. Därför, för att göra programmerarens liv enklare, använder Python *args och **kwargs.
Denna operator är en uppackningsoperator som vanligtvis används för att överföra ett ospecificerat antal parametrar eller argument.
Som vi har sett används “*” operatorn för att packa upp värden. Exemplet illustreras nedan.
x = [1, 2, 3, 4] y = [5, 6, 7, 8] z = *x, *y print(type(z)) print(z)
Output: <class 'tuple'> (1, 2, 3, 4, 5, 6, 7, 8)
Som vi kan se har uppackningsoperatorn packat upp listan x och listan y till en tuple som är z. Vi kan också se att resultatet är en tuple.
Låt oss skriva samma funktion med hjälp av *Args.
def maxarea(*lis): max = 0 for i in lis: if i > max: max = i return f"rektangel som har den större arean är {max}" x = maxarea(100, 60, 50, 200) y = maxarea(100, 60, 50, 200, 9000) z = maxarea(100, 60, 50, 20, 90) print(x) print(y) print(z)
Output: rektangel som har den större arean är 200 rektangel som har den större arean är 9000 rektangel som har den större arean är 100
I detta kodblock kan vi se att argumenten nu är dynamiska, vi kan lägga till ett valfritt antal argument som kommer att packas upp i maxarea-funktionen för att ge oss det önskade resultatet. Dessutom kan vi jämföra ett valfritt antal områden i detta sammanhang.
kwargs är som args men det accepterar positionsargument. Det använder ** operatorn som har vissa egenskaper som att packa upp flera positionsargument av valfri längd, kan också packa upp ordböcker, kan också användas för att kombinera två ordböcker.
a = {"h": 1, "n": 2} b = {"m": 5, "l": 10} c = {**a, **b} print(type(c)) print(c) Vi kan se från den ovanstående koden att vi har 2 ordböcker a och b som sammanfogas med hjälp av ** operatorn för att ge en annan ordbok. Output: <class 'dict'> {'h': 1, 'n': 2, 'm': 5, 'l': 10}
När vi använder * operatorn istället för ** operatorn, illustreras koden för detta fall nedan.
a = {"h": 1, "n": 2} b = {"m": 5, "l": 10} c = {*a, *b} print(type(c)) print(c)
Output: <class 'set'> {'n', 'l', 'm', 'h'}
Därför, när * operatorn används på två ordböcker för att sammanfoga, kommer resultatet att vara en mängd med endast nycklarna från ordboken.
maxarea-funktionen med hjälp av **kwargs illustreras i nedanstående kodblock.
def maxarea(**lis): max = 0 for i in lis.values(): if i > max: max = i return f"rektangel som har den större arean är {max}" x = maxarea(a=1, b=2, c=3) y = maxarea(a=1, b=2) z = maxarea(a=1, b=2, c=3, d=9) print(x) print(y) print(z)
Output: rektangel som har den större arean är 3 rektangel som har den större arean är 2 rektangel som har den större arean är 9
I denna blogg om avancerade funktioner i Python har vi täckt ämnen som att överföra funktioner till andra funktioner, använda funktioner inuti en funktion, *Args i Python, “*” operator i Python, **kwargs i Python, och mer. De vidare ämnen som inkluderar klasser kommer att täckas i den nästa blogginlägget. Hemläxa angående avancerade funktioner i Python ges nedan.
Filer i PDF-format följer med oss varje dag. Detta universella sätt att spara innehåll garanterar…
Utvecklingen av Internet och maskininlärning har äntligen satt åt sidan traditionella skrymmande pappersordböcker. Oavsett om…
Röntgensökning är en av många datorsökningstekniker som används för att rekrytera anställda av HR-avdelningar. Den…
Idag kommer vi att fokusera på den inledande fasen av företagsutveckling – nystartade företag. Vi…
Program för att bygga appar utan kodning – känner du till några av dem? Som…
Vad är teamdynamik? Teamdynamik återspeglar den organisatoriska kulturen och arbetsmiljön där teamet verkar. Positiv eller…