Python Funktionen

Programming Functions

Eine Funktion ist ein Block von organisiertem Code, der verwendet wird, um eine einzelne Aufgabe auszuführen. Sie bieten eine bessere Modularität für Ihre Anwendung und Wiederverwendbarkeit.

Funktionsargumente

Eine Funktion kann Argumente und Rückgabewerte entgegennehmen:

Im folgenden Beispiel empfängt die Funktion say_hello das Argument “name” und gibt eine Begrüßung aus:

# Define a function that takes one argument
def say_hello(name):
   print(f'Hello {name}')

# Call the function with a string argument
say_hello('Carlos')
Hello Carlos
say_hello('Wanda')
Hello Wanda
say_hello('Rose')
Hello Rose

Schlüsselwortargumente

Um die Lesbarkeit des Codes zu verbessern, sollten wir so explizit wie möglich sein. Dies können wir in unseren Funktionen durch die Verwendung von Keyword Arguments (Schlüsselwortargumenten) erreichen:

# Function with multiple parameters
def say_hi(name, greeting):
   print(f"{greeting} {name}")

# Positional arguments: order matters
say_hi('John', 'Hello')
Hello John
# Keyword arguments: order doesn't matter, more readable
say_hi(name='Anna', greeting='Hi')
Hi Anna
Quiz

Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen

What is the main advantage of using keyword arguments in Python functions?
A. They execute faster
B. They use less memory
C. They improve code readability and order doesn't matter
D. They prevent errors

Rückgabewerte

Wenn Sie eine Funktion mit der def-Anweisung erstellen, können Sie mit einer return-Anweisung festlegen, was der Rückgabewert sein soll. Eine Rückgabeanweisung besteht aus Folgendem:

  • Das Schlüsselwort return.

  • Der Wert oder Ausdruck, den die Funktion zurückgeben soll.

# Function that returns a value using return statement
def sum_two_numbers(number_1, number_2):
   return number_1 + number_2

# Call function and store the returned value
result = sum_two_numbers(7, 8)
print(result)
15
Quiz

Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen

What keyword is used to return a value from a function in Python?
A. return
B. output
C. yield
D. exit

Lokaler und globaler Gültigkeitsbereich (Scope)

  • Code im globalen Gültigkeitsbereich kann keine lokalen Variablen verwenden.

  • Ein lokaler Gültigkeitsbereich kann jedoch auf globale Variablen zugreifen.

  • Code im lokalen Gültigkeitsbereich einer Funktion kann keine Variablen in einem anderen lokalen Gültigkeitsbereich verwenden.

  • Sie können denselben Namen für verschiedene Variablen verwenden, wenn diese sich in unterschiedlichen Gültigkeitsbereichen befinden. Das heißt, es kann eine lokale Variable namens spam und eine globale Variable, die ebenfalls spam heißt, geben.

# Global variable: accessible everywhere
global_variable = 'I am available everywhere'

def some_function():
    print(global_variable)  # Can access global variable
    # Local variable: only exists within this function
    local_variable = "only available within this function"
    print(local_variable)

# This will raise NameError: local_variable doesn't exist in global scope
print(local_variable)
Traceback (most recent call last):
  File "<stdin>", line 10, in <module>
NameError: name 'local_variable' is not defined

Die global-Anweisung

Wenn Sie eine globale Variable innerhalb einer Funktion ändern müssen, verwenden Sie die global-Anweisung:

# Use 'global' keyword to modify global variable from inside function
def spam():
    global eggs  # Declare that we're modifying the global variable
    eggs = 'spam'  # This changes the global variable

eggs = 'global'
spam()  # Function modifies global variable
print(eggs)  # Prints 'spam', not 'global'
spam
Quiz

Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen

What keyword must you use inside a function to modify a global variable?
A. nonlocal
B. global
C. extern
D. No keyword needed

Es gibt vier Regeln, um festzustellen, ob sich eine Variable in einem lokalen oder globalen Gültigkeitsbereich befindet:

  1. Wenn eine Variable im globalen Gültigkeitsbereich verwendet wird (d. h. außerhalb aller Funktionen), ist sie immer eine globale Variable.

  2. Wenn es in einer Funktion eine global-Anweisung für diese Variable gibt, ist sie eine globale Variable.

  3. Andernfalls, wenn die Variable in einer Zuweisungsanweisung in der Funktion verwendet wird, ist sie eine lokale Variable.

  4. Aber wenn die Variable nicht in einer Zuweisungsanweisung verwendet wird, ist sie eine globale Variable.

Lambda-Funktionen

In Python ist eine Lambda-Funktion eine einzeilige, anonyme Funktion, die eine beliebige Anzahl von Argumenten haben kann, aber nur einen Ausdruck enthalten darf.

From the Python 3 Tutorial

lambda is a minimal function definition that can be used inside an expression. Unlike FunctionDef, body holds a single node.

Single line expression

Lambda functions can only evaluate an expression, like a single line of code.

Diese Funktion:

# Regular function definition
def add(x, y):
    return x + y

add(5, 3)
8

Ist äquivalent zur Lambda-Funktion:

# Lambda function: anonymous function defined in one line
# Syntax: lambda arguments: expression
add = lambda x, y: x + y
add(5, 3)
8
Quiz

Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen

What is a lambda function in Python?
A. A function that can only be called once
B. A function that takes no arguments
C. A function that returns multiple values
D. A single-line anonymous function that can have any number of arguments but only one expression

Wie reguläre verschachtelte Funktionen funktionieren auch Lambdas als lexikalische Closures:

# Lambda closure: lambda function that captures variable from outer scope
def make_adder(n):
    return lambda x: x + n  # Lambda captures 'n' from outer function

# Create functions that add different amounts
plus_3 = make_adder(3)  # Returns lambda that adds 3
plus_5 = make_adder(5)  # Returns lambda that adds 5

plus_3(4)  # Returns 4 + 3 = 7
7
plus_5(4)
9
Quiz

Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen

What does a lambda closure allow you to do?
A. Capture variables from the outer scope
B. Modify global variables without the global keyword
C. Return multiple values
D. Execute code asynchronously