• Startseite
  • Produkte
  • Jetzt
  • Buchnotizen
  • Lebenslauf
  • Unternehmensberatung
  • Spiele
  • Click to open the search input field Click to open the search input field Suche
  • Menü Menü
Denis Reis
  • Link zu X
  • Link zu Facebook
  • Link zu Xing
  • Link zu LinkedIn
  • Link zu Rss dieser Seite
  • Link zu Mail
Allgemein

Python Spickzettel

Python Spickzettel

Wenn Sie alle paar Jahre Python schreiben, vergessen Sie leicht die Syntax. In diesem Fall können Sie diesen Spickzettel nutzen.

Inhaltsverzeichnis

  • Hilfreiche Links
  • Umgebung aufsetzen
    • UV
    • Poetry
  • Vibe Coding mit SAP AI Core
  • Git und GitHub
  • API Keys verwalten
  • If __name__ = „__main__“
  • Kommentare
  • Style Guide
  • Escape Character
  • Strings
  • Strings mit Variablen verknüpfen
  • Python Collections Überblick: List, Tuple, Set, Dictionary
  • List
  • Dictionary
  • For Loop
  • Funktionen
  • Lambda Funktionen
  • Dekoratoren für Funktionen
  • Klassen
  • Fehlerbehandlung mit try

Hilfreiche Links

  • Python Webseite
  • Python Tutorial

Umgebung aufsetzen

Python environment in VS Code – To create local environments in VS Code using virtual environments or Anaconda, you can follow these steps: open the Command Palette (Ctrl+Shift+P), search for the Python: Create Environment command, and select it.

Beim Anlegen kann man auch auswählen, ob alles aus requirements.txt installiert werden soll. Aber manchmal ist die virtuelle Umgebung noch nicht aktiv und dann ist das Chaos perfekt.

Daher zuerst sicherstellen, dass der venv Python Interpreter ausgewählt ist.Command Palette (Ctrl+Shift+P), search for the Python: Select Interpreter. Wird in der unteren rechten Ecke angezeigt.

Virtual Environment aktivieren:

.venv\Scripts\activate

On Windows, it may be required to enable this Activate.ps1 script by setting the execution policy for the user. You can do this by issuing the following PowerShell command:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Nach der Aktivierung wird im Terminal grün (.venv) vorangestellt. Im Terminal der Ordners ausführen wo die Datei requirements.txt vorhanden ist, um die Pakete zu installieren.

pip install -r requirements.txt

Über Terminal → New Terminal kann man anschließend neue Packages installieren oder die über requirements.txt installierten upgraden. Sie werden in .venv /Lib/site-packages abgelegt.

pip install --upgrade streamlit

Die verwendete Python Version kann mithilfe von python -V > python_version.txt dokumentiert werden:

.venv\Scripts\activate
python -V > python_version.txt

Eigene requirements.ext können mit pip freeze erstellt werden:

.venv\Scripts\activate
pip freeze > requirements.txt

Oder mit pipreqs. Installieren mit pip install pipreqs

Dabei wird der code in einem src Ordner abgelegt, damit pipreqs nicht den gesamten venv_test mit .venv Ordner scannt. Der venv_test Ordner hat zwei Unterordner .venv (mit der virtuellen Python Umgebugn) und src (mit unserem Quellcode).

pipreqs D:\Users\denis\python_projekte\venv_test\src

Oder zum src Ordner navigieren und den aktuellen Order scannen (.) und die eventuell bestehende requirements.txt Datei über schreiben (--force):

.venv\Scripts\activate
cd src
pipreqs . --force

UV

Alternative mit UV. Installieren über Powershell.

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Neues Projekt mit uv init anlegen.

mkdir hello-world
cd hello-world
uv init

Alternativ kann der Ordner auch direkt angelegt werden.

uv init hello-world
cd hello-world

Bei der Ausführung wird automatisch eine virtuelle Umgebung angelegt.

uv run main.py

Sie können auch manuell eine virtuelle Umgebung anlegen und aktivieren.

uv venv

.venv\Scripts\activate

Bibliotheken können mit uv add installiert und uv remove entfernt werden.

uv add mcp
uv remove mcp

Mit uv lock und --upgrade-package können Sie eine Aktualisierung der Bibliothek durchführen

uv lock --upgrade-package mcp

Mit uv tree können Sie sämtliche Abhängigkeiten anzeigen.

uv tree

Poetry

Alternative mit Poetry. Installieren über pip install poetry

.venv\Scripts\activate
poetry init

Neues Projekt mit new anlegen:

poetry new poetry-demo

#This will create the poetry-demo directory with the following content:
poetry-demo
├── pyproject.toml
├── README.md
├── src
│   └── poetry_demo
│       └── __init__.py
└── tests
    └── __init__.py

Eine Bibliothek installieren:

poetry add pandas

Spezifische Version mit @ installieren.

poetry add pandas@2.2.2

Kann auch ^ und ~ nutzen, um bis zu einer bestimmten Version zu installieren. Siehe Dokumentation.

Und deinstallieren:

poetry remove pandas

Alle dependencies installiern:

poetry install
#oder
poetry install --no-root

Requirements aus Poetry generieren:

poetry export --without-hashes --format=requirements.txt > requirements.txt

Version erhöhen:

poetry version minor
poetry version major

Check auch:

Google Colab – ermöglicht Ausführung von Jupyter-Notebooks in der Cloud. Es ist kostenlos und ermöglicht es Ihnen, Ihre Notebooks auf einer GPU oder TPU auszuführen.

Full setup for Python development with virtual environments

Working with Jupyter Notebooks in Visual Studio Code

GitHub

Neue GitHub Repositiory erstellen:

  1. Drücke Ctrl+Shift+P
  2. Tippe Git: Initialize Repository
  3. Wähle den Ordner aus

Oder git init im Terminal eingeben:

git init

Dann: Publish Brach → Publish to GitHub private repository (bzw. public repository).

GitHub Repository clonen. --depth 1 ruft nur den aktuellsten Commit ab – ohne Historie, für einen minimalen Download. Falls man nur den aktuellen Code als Vorlage braucht.

git clone --depth 1 https://github.com/anthropics/skills.git

Volle Repository clonen

git clone https://github.com/anthropics/skills.git

Einzelne Ordner können mit dem node.js Packet degit heruntergeladen werden.

npx degit anthropics/skills/skills/frontend-design .claude/skills/frontend-design

Neues Projekt in der bestehenden Repository: Use Ctrl+Shift+P → „Git: Create Branch“ to make project-specific branches.

Einen Datei auf den Zustand eines bestimmten Commits zurücksetzen mit git restore – Einen Commit im Graph auswählen, Rechtklick, Copy Commit ID. Dann im Terminal:

git restore --source=<Commit ID> <file>
# z. B.:
git restore --source=45ba85e89acfc2c4c0de5e7ffc6676bf31b7dfda src/hello.py

Die „Cherry Pick“-Funktion (Rechtskllick in Source Control – Graph) in VS Codes Git-Integration ermöglicht es, spezifische Commits anzuwenden. Im Wesentlichen kopiert sie einen Commit und wendet ihn als neuen Commit auf die aktuellen Branch an.

Merging Conflict – Resolve in Merge Editor → Accept All Incoming Changes from the Left (zwei Häckchen Icon). Auf + Icon neben dem File klicken (Stage Changes)

Branch mergen – „main“ Branch auswählen → auf … klicken → Branch → Merge… und Unterbranch auswählen.

Branch löschen – Ctrl+Shift+P → „Git: Delete Branch“ und „Git: Delete Remote Branch“.

API Keys verwalten – .env

Best Practices for API Key Safety – setx OPENAI_API_KEY "yourkeyhere" oder System > Erweiterte Systemeinstellungen > Umgebungsvariablen.

Alternativ in einer .env Datei im jeweiligen Projekt ablegen und zur Laufzeit in die Umgebugnsvariablen laden.

import os
from dotenv import load_dotenv

Private information is stored in .env in the following format. No spaces, no brackets.

OPENAI_API_KEY=your_api_key

Load .env into environment variables for API keys and passwords. In Debugging unter os -> environ -> _data

load_dotenv(override=True)

Display constants from .env

print(os.getenv('OPENAI_API_KEY'))
print(os.getenv('OPENAI_API_BASE'))
print(os.getenv('LANGCHAIN_API_KEY'))
print(os.getenv('LANGCHAIN_TRACING_V2'))
print(os.getenv('LANGCHAIN_ENDPOINT'))
print(os.getenv('LANGCHAIN_PROJECT'))

Prompt for key and store it as environment variable

import os
import getpass

if "OPENAI_API_KEY" not in os.environ:
    os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API key: ")
print(os.environ["OPENAI_API_KEY"])

Check if LangSmith Trace is on

from langsmith import utils
utils.tracing_is_enabled()

Run any LLM, Chat model, or Chain. Its trace will be sent to this project.

from langchain_openai import ChatOpenAI

llm = ChatOpenAI()
llm.invoke("Tell me a joke")

If __name__ == __main__

Verhindert versehentliche Ausführung beim Import.

import os
from dotenv import load_dotenv
# Weitere imports hier

def main():
    load_dotenv()


if __name__ == '__main__':
    main()

Kommentare

# Dies ist ein Kommentar
answer = 42  # Dies ist ein Inline-Kommentar

Mehrere Zeilen – in VS Code: Edit > Toogle Line Comment oder Strg + #

# Dies ist ein Kommentar
# über mehrere
# Zeilen

Blockkommentare gibt es in Python nicht. Mann könnte Docstringst nutzen. In VS Code: Edit > Toogle Block Comment oder Shift + Alt + A

Solange die Zeichenkette nicht einer Variablen zugewiesen ist, liest Python den Code, ignoriert ihn dann aber.

"""
Dies ist ein Kommentar
über mehrere 
Zeilen
"""
"""
Dieser Blocktext
wird vom Interpreter ignoriert,
da er nirgendwo zugewiesen wird.
"""

Docstring

def add_numbers(a, b):
    """
    Diese Funktion addiert zwei Zahlen.
    
    Parameter:
    a (int): Die erste Zahl.
    b (int): Die zweite Zahl.
    
    Rückgabe:
    int: Die Summe der beiden Zahlen.
    """
    return a + b

Style Guide

Variablen verwenden Kleinbuchstaben. Mehrere Wörter werden mit Unterstrichen verbunden (snake_case).

studenten_name = "Alice"

Konstanten verwenden nur Großbuchstaben.Wörter werden ebenfalls mit Unterstrichen getrennt. Konstanten stehen am Anfang eines Moduls.

MAXIMALE_WIEDERHOLUNGEN = 5
API_SCHLUESSEL = "dein-key-hier"

Funktionen verwenden Kleinbuchstaben. Mehrere Wörter werden mit Unterstrichen verbunden (snake_case).

berechne_gesamtpreis()

Bei Klassen wird jedes Wort großschreiben, keine Unterstriche (PascalCase).

class StudentenProfil:
    pass

Private Variablen oder Funktionen beginnen mit einem einzelnen Unterstrich:

_private_funktion()

Namen, die mit doppelten Unterstrichen beginnen und enden (z. B. __init__, __str__), sind für Python Methoden reserviert.

Escape Character

Ein Escape-Zeichen in Python ist ein Backslash \, gefolgt von dem Zeichen, das Sie einfügen möchten.

txt = "We are the so-called \"Vikings\" from the north."
print(txt) 

Strings

Strings werden mit ‚ ‚ oder “ “ gekennzeichnet.

print("Hello world!")
print('Hello world!')

Quotes inside quotes

print("It's alright, it's ok")
print("He is called 'Deni'")
print('He is called "Deni"')

Ausgabe:

It's alright, it's ok
He is called 'Deni'
He is called "Deni"

Strings sind auch Arrays bzw. Listen. Python hat jedoch keinen Zeichendatentyp, ein einzelnes Zeichen ist einfach eine Zeichenkette mit der Länge 1. Eckige Klammern können verwendet werden, um auf Elemente der Zeichenkette zuzugreifen. Sie beginnen mit 0.

a = "Hello, world!"
print(a[0])
print(a[1])
print(a[2])

Ausgabe:

H
e
l

Da Zeichenketten Arrays sind, können wir mit einer for-Schleife durch die Zeichen in einer Zeichenkette gehen.

for x in "Denis":
  print(x)

Ausgabe:

D
e
n
i
s

Länge des Strings mit len() Funktion ausgeben.

a = "Denis"
print(len(a))
# Ausgabe: 5 

Um zu prüfen, ob eine bestimmte Phrase oder ein bestimmtes Zeichen in einer Zeichenkette vorhanden ist, können wir das Schlüsselwort in verwenden.

txt = "The best things in life are free!"
print("free" in txt)
# Ausgabe: True 

Ausgabe wenn „free“ im String

txt = "The best things in life are free!"
if "free" in txt:
  print("Yes, 'free' is present.")
# Ausgabe: Yes, 'free' is present.

Um zu prüfen, ob eine bestimmte Phrase oder ein bestimmtes Zeichen NICHT in einer Zeichenkette vorhanden ist, können wir das Schlüsselwort not in verwenden.

txt = "The best things in life are free!"
print("expensive" not in txt)
# Ausgabe: True

Mit if

txt = "The best things in life are free!"
if "expensive" not in txt:
  print("No, 'expensive' is NOT present.")
# Ausgabe: No, 'expensive' is NOT present.

Sie können einer Variablen eine mehrzeilige Zeichenkette zuweisen, indem Sie drei Anführungszeichen verwenden. Im Ergebnis werden die Zeilenumbrüche an der gleichen Stelle wie im Code eingefügt.

text = """Lorem ipsum dolor adipiscing consectetur amet,
ipsum elit Lorem sit ut tempor aliqua incididunt,
do et sed eiusmod dolore."""

print(text)

Zeilenenden werden automatisch in die Zeichenkette aufgenommen, aber es ist möglich, dies zu verhindern, indem ein \ am Ende der Zeile hinzugefügt wird. Im folgenden Beispiel wird der erste Zeilenumbruch nicht berücksichtigt:

text = """\
Lorem ipsum dolor adipiscing consectetur amet,
ipsum elit Lorem sit ut tempor aliqua incididunt,
do et sed eiusmod dolore.
"""

print(text)

Strings mit Variablen verknüpfen

Am einfachsten mit F-Strings.

first_name = "Denis"
last_name = "Reis"
full_name = f"{first_name} {last_name}"
message = f"Hello, {full_name.upper()}!" # In Großbuchstaben
print(full_name)
print(message)

Ausgabe:

Denis Reis
Hello, DENIS REIS!

Python Collections Überblick

4 Arten – Data Structures in Python:

  • List is a collection which is ordered and changeable. Allows duplicate members.
  • Tuple is a collection which is ordered and unchangeable. Allows duplicate members.
  • Set is a collection which is unordered, unchangeable, and unindexed. No duplicate members.
  • Dictionary is a collection which is ordered and changeable. No duplicate members.
TypeOrderedChangeableDuplicates
List
["apple", "banana", "cherry"]
YesYesYes
Tuple
("apple", "banana", "cherry")
YesNoYes
Set
{"apple", "banana", "cherry"}
NoNoNo
Dictionary
thisdict = {
"fruit": "apple",
"color": "red",
"price": 2
}
YesYesNo

List

Speichert mehrere Elemente in einer einzigen Variable.

friends = ["Kevin", "Karen", "Jim"]
print(friends)
# Ausgabe: ['Kevin', 'Karen', 'Jim']

Kann mehrere Datentypen in einer Liste speichern.

friends = ["Kevin", 2, True]

Listen erlauben Duplikate.

friends = ["Kevin", "Karen", "Jim", "Kevin"]
print(friends)
# Ausgabe: ['Kevin', 'Karen', 'Jim', 'Kevin']

Ausgabe über Index. Fängt mit 0 an. 0, 1, 2, 3…

friends = ["Kevin", "Karen", "Jim"]
print(friends[0])
# Ausgabe: Kevin
friends = ["Kevin", "Karen", "Jim"]
print(friends[2])
# Ausgabe: Jim

Kann auch von hinten Anfangen. Mit -1 – erste von hinten.

friends = ["Kevin", "Karen", "Jim"]
print(friends[-1])
# Ausgabe: Jim
friends = ["Kevin", "Karen", "Jim"]
print(friends[-2])
# Ausgabe: Karen

Teile der Liste ausgeben. Ab Index 0 (erste Position) bis Ende. Also dasselbe wie gesamte Liste ausgeben.

friends = ["Kevin", "Karen", "Jim"]
print(friends[0:])
# Ausgabe: ['Kevin', 'Karen', 'Jim']

Ab Index 1 (ab der zweiten Position) bis Ende.

friends = ["Kevin", "Karen", "Jim"]
print(friends[1:])
# Ausgabe: ['Karen', 'Jim']

Index 1 bis 3 (3 nicht eingeschlossen).

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]
print(friends[1:3])
# Ausgabe: ['Karen', 'Jim']

Von hinten bis Anfang.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]
print(friends[:5])
# Ausgabe:9 ['Kevin', 'Karen', 'Jim', 'Oscar', 'Tobias']

Mit -1. Letzte wird nicht inkludiert.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]
print(friends[:-1])
# Ausgabe: ['Kevin', 'Karen', 'Jim', 'Oscar']

Index -1 bis -3, nicht inkludiert.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]
print(friends[-3:-1])
# Ausgabe: ['Jim', 'Oscar']

Listenelement ändern. Element mit der Indexposition 1 anpassen.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]
friends[1] = "Denis"
print(friends)
# Ausgabe: ['Kevin', 'Denis', 'Jim', 'Oscar', 'Tobias']

Länge der Liste ausgeben.

friends = ["Kevin", "Karen", "Jim"]
print(len(friends))
# Ausgabe: 3

Liste kann über den list() Konstruktor erstellt werden.

friends = list(("Kevin", "Karen", "Jim")) # note the double round-brackets
print(type(friends))
print(friends)
# Ausgabe: <class 'list'>
# Ausgabe: ['Kevin', 'Karen', 'Jim']

Listen zusammenführen.

lucky_numbers = [4, 8, 15, 16,23, 42]
friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]

friends.extend(lucky_numbers)
print(friends)
# Ausgabe: ['Kevin', 'Karen', 'Jim', 'Oscar', 'Tobias', 4, 8, 15, 16, 23, 42]

Element zur Liste hinzufügen. Wir am Ende der Liste hinzugefügt.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]

friends.append("Denis")
print(friends)
# Ausgabe: ['Kevin', 'Karen', 'Jim', 'Oscar', 'Tobias', 'Denis']

An einer bestimmten Position (Index) einfügen. Wird in dieser Indexposition (Index staret mit 0) eingefügt. Alle anderen Elemente werden nach rechts geschoben.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]

friends.insert(1, "Denis")
print(friends)
# Ausgabe: ['Kevin', 'Denis', 'Karen', 'Jim', 'Oscar', 'Tobias']

Element entfernen.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]

friends.remove("Jim")
print(friends)
# Ausgabe: ['Kevin', 'Karen', 'Oscar', 'Tobias']

Entfernt jedoch nur den ersten Eintrag für „Jim“

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias", "Jim"]
print(friends)
# Ausgabe: ['Kevin', 'Karen', 'Jim', 'Oscar', 'Tobias', 'Jim']

friends.remove("Jim")
print(friends)
# Ausgabe: ['Kevin', 'Karen', 'Oscar', 'Tobias', 'Jim']

Um alle Einträge für „Jim“ zu entfernen, gibt es mehrere Methoden.

  1. List comprehension. Create a new list with all names excpet „Jim“.
friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias", "Jim"]
friends = [name for name in friends if name != "Jim"]
print(friends)
# Ausgabe: ['Kevin', 'Karen', 'Oscar', 'Tobias']

2. Neue Liste mit filter() Lambda Funktion anlegen.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias", "Jim"]
friends = list(filter(lambda name: name != "Jim", friends))
print(friends)

3. Loop mit remove(). Mach das nicht, nutze einfach List comprehension.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias", "Jim"]
while "Jim" in friends:
    friends.remove("Jim")
print(friends)

Liste leeren.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]
friends.clear()
print(friends)
# Ausgabe: []

Letzen Eintrag entfernen mit pop().

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]
friends.pop()
print(friends)
# Ausgabe: ['Kevin', 'Karen', 'Jim', 'Oscar']

Index eines bestimmten Eintrag ausgeben. Index fängt mit 0 an.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]

print(friends.index("Jim"))
# Ausgabe: 2

Wenn ein Eintrag nicht in der Liste ist, wird ein ValueError ausgegeben.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]

print(friends.index("Denis"))
# Ausgabe: ValueError: 'Denis' is not in list

Doppelte Einträge zählen.

friends = ["Kevin", "Karen", "Jim", "Jim", "Tobias"]

print(friends.count("Jim"))
# Ausgabe: 2

Liste sortieren.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias", "Denis"]
friends.sort()
print(friends)
# Ausgabe: ['Denis', 'Jim', 'Karen', 'Kevin', 'Oscar', 'Tobias']

Reihenfolge umkehren.

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]
friends.reverse()
print(friends)
# Ausgabe: ['Tobias', 'Oscar', 'Jim', 'Karen', 'Kevin']

Liste kopieren

friends = ["Kevin", "Karen", "Jim", "Oscar", "Tobias"]
personen = friends.copy()
print(personen)
# Ausgabe: ['Kevin', 'Karen', 'Jim', 'Oscar', 'Tobias']

Dictionary

Speichert Informationen in einer Reihe von Schlüssel-Wert-Paaren. key:value

Ähnlich wie JSON in JavaScript. Ein Dictionary ist eine Sammlung, die geordnet sowie veränderbar ist und keine Duplikate zulässt.

Man kann es sich wie ein Wörterbuch (engl. Dictionary) vorstellen. Links ist Key / Schlüssel, Rechts ist der Wert. In unserem Beispiel ist der deutsche Eintrag „Januar“ Schlüssel und des englische Pendant „January“ der Wert

monate =	{
  "Januar": "January",
  "Februar": "February",
  "März": "March",
  "April": "April"
}
print(monate) 
# Ausgabe: {'Januar': 'January', 'Februar': 'February', 'März': 'March', 'April': 'April'}

Duplikate sind nicht erlaubt. Da der erster Eintrag Key/Schlüssel ist. Key is unique. Doppelter Eintrag überschreibt den vorherigen Eintrag.

monate =	{
  "Januar": "January",
  "Februar": "February",
  "März": "March",
  "April": "April",
  "Januar": "Jan",
}
print(monate) 
# Ausgabe: {'Januar': 'Jan', 'Februar': 'February', 'März': 'March', 'April': 'April'}

Kann verschiedene Datentypen speichern

thisdict =	{
  "brand": "Ford", #string
  "electric": False, #boolean
  "year": 1964, #int
  "colors": ["red", "white", "blue"] #list
} 

dict() Konstruktor kann genutzt werden, um Dictionaries zu erstellen.

person = dict(name = "Denis", age = 42, country = "Schweiz")
print(person)
# Ausgabe: {'name': 'Denis', 'age': 42, 'country': 'Schweiz'}

Den Wert über Schlüssel auslesen

monthConversions = {
    "Jan" : "January",
    "Feb" : "February",
    "Mar" : "March",
    "Apr" : "April",
    "May" : "May",
    "Jun" : "June",
    "Jul" : "July",
    "Aug" : "August",
    "Sep" : "September",
    "Oct" : "October",
    "Nov" : "November",
    "Dec" : "December"
 }

print(monthConversions["Nov"]) 
# Ausgabe: November

Mit get() Methode

print(monthConversions.get("Dec"))
# Ausgabe: December

get() mit Default / Standard Wert

print(monthConversions.get("X", "Not a valid key"))
# Ausgabe: Not a valid key

JSON-Objekte haben das gleiche Format wie Python-Dictionaries. Wenn Ihr JSON-Code nicht in einer Datei, sondern in einem Python-Dictionary steht, können Sie ihn direkt in einen Pandas DataFrame laden.


data = {
  "Duration":{
    "0":60,
    "1":60,
    "2":60,
    "3":45,
    "4":45,
    "5":60
  },
  "Pulse":{
    "0":110,
    "1":117,
    "2":103,
    "3":109,
    "4":117,
    "5":102
  },
  "Maxpulse":{
    "0":130,
    "1":145,
    "2":135,
    "3":175,
    "4":148,
    "5":127
  },
  "Calories":{
    "0":409,
    "1":479,
    "2":340,
    "3":282,
    "4":406,
    "5":300
  }
}

import pandas as pd
df = pd.DataFrame(data)
print(df) 

Ausgabe:

   Duration  Pulse  Maxpulse  Calories
0        60    110       130       409
1        60    117       145       479
2        60    103       135       340
3        45    109       175       282
4        45    117       148       406
5        60    102       127       300

For Loop

Iteration über eine Collection. Syntax: for <Variable> in <Collection>: <do something>

In Python sind Strings auch Arrays und man kann über sie loopen. Zum Beispiel, jeden Buchstaben in „Hello world“ ausdrucken:

for variable in "Hello world":
    print(variable)

Die Variable nach for kann beliebig benannt werden.

string = "Hello world"
for letter in string:
    print(letter)

Ausgabe:

H
e
l
l
o
 
w
o
r
l
d

Loop over list:

friends = ["Kevin", "Karen", "Jim"]
for friend in friends:
    print(friend.upper()) #In Großbuchstaben ausgeben

Ausgabe:

KEVIN
KAREN
JIM

range kann genutzt werden, um Iterationen über den Index auszuführen.

friends = ["Kevin", "Karen", "Jim"]
for index in range(len(friends)):
    print(friends[index].lower()) #In Kleinbuchstaben ausgeben
    #gibt friends[0], dann friends[1] usw. aus.

Ausgabe:

kevin
karen
jim

Bei Iterationen über eine Sequenz können der Positionsindex und der entsprechende Wert mit der Funktion enumerate() aufgerufen werden.

for index, friend in enumerate(friends):
    print(index, friend)

Ausgabe:

0 Kevin
1 Karen
2 Jim

Bei Iterationen über Dictionaries können der Schlüssel und der entsprechende Wert mit der items() Methode aufgerufen werden.

monate = {
    "Januar": "January",
    "Februar": "February", 
    "März": "March",
    "April": "April"
}

for german, english in monate.items():
    print(f"{german}: {english}")

Ausgabe:

Januar: January
Februar: February
März: March
April: April

Funktionen

Funktionen ermöglichen es, eine bestimmte Aufgabe mehrfach auszuführen. Funktionen stellen einen wiederverwendbaren Codeblock dar, der eine Folge von Anweisungen zusammenfasst, um eine bestimmte Aufgabe zu erfüllen.

def say_hi():
    print("Hi")

say_hi() #output: Hi

Mit Parameter:

def say_hi(name):
    print(f"Hi {name}")

say_hi("Denis") #output: Hi Denis

Mit mehreren Parametern:

def say_hi(vorname, nachname):
    print(f"Hi {vorname} {nachname}!")

say_hi("Denis", "Reis") #output: Hi Denis Reis!

Mit Ausgabe zur Weiterverarbeitung:

def say_hi(vorname, nachname):
    greeting = f"Hi {vorname} {nachname}!"
    return greeting

greetings = say_hi("Denis", "Reis")
print(greetings)

Ein anderes Beispiel:

def cube(num):
    return num*num*num

print(cube(3))
def cube(num):
    return num*num*num

result=cube(4)
print(result)

Hier ist ein Beispiel für eine Python-Funktion, die zwei Zahlen aus Benutzereingaben multipliziert.

def multiply_numbers():
    # Get input from the user
    num1 = float(input("Enter the first number: "))
    num2 = float(input("Enter the second number: "))
    
    # Multiply the numbers
    result = num1 * num2
    
    # Print the result
    print(f"The result of multiplying {num1} and {num2} is {result}")
    
# Call the function
multiply_numbers()

Hier ist ein Beispiel, bei dem der Benutzer die Eingaben als Argumente an die Funktion übergeben kann, anstatt innerhalb der Funktion aufgefordert zu werden.

def multiply_numbers(num1, num2):
    # Multiply the numbers
    result = num1 * num2
    
    # Print the result
    print(f"The result of multiplying {num1} and {num2} is {result}")

# User-provided inputs
number1 = float(input("Enter the first number: "))
number2 = float(input("Enter the second number: "))

# Call the function with user inputs
multiply_numbers(number1, number2)
def multiply_numbers(num1, num2):
    # Multiply the numbers
    result = num1 * num2
    
    # Print the result
    print(f"The result of multiplying {num1} and {num2} is {result}")

# User-provided inputs
number1 = 2
number2 = 3

# Call the function with user inputs
multiply_numbers(number1, number2)

Gibt das Ergebnis der Funktion zur Weiterverarbeitung aus

def multiply_numbers(num1, num2):
    # Multiply the numbers
    result = num1 * num2
    return result

# User-provided inputs
number1 = 2
number2 = 3

# Call the function with user inputs and store the result in a variable
result = multiply_numbers(number1, number2)

# Print the result
print(f"The result of multiplying {number1} and {number2} is {result}")
def multiply_numbers(num1, num2):
    # Multiply the numbers
    result = num1 * num2
    return result

# User-provided inputs
number1 = 2
number2 = 3

# Call the function with user inputs and store the result in a variable
number3 = multiply_numbers(number1, number2)

# Print the result
print(f"The result of multiplying {number1} and {number2} is {number3}")

Wegen Lesbarkeit würde ich folgendes nicht empfehlen.

def multiply_numbers(num1, num2):
    # Multiply the numbers
    result = num1 * num2
    return result

# User-provided inputs
number1 = 2
number2 = 3

# Print the result
print(f"The result of multiplying {number1} and {number2} is {multiply_numbers(number1, number2)}")

Funktion zur Extraktion von Inhalten zwischen XML Tags.

import re

def extract_tag_content(text, tag_name):
    """
    Extract content between specified XML/HTML-style tags.
    
    Args:
        text (str): The input text containing tagged content
        tag_name (str): Name of the tag to extract content from
    
    Returns:
        str or None: Content between tags if found, None otherwise
    """
    # Create pattern using the provided tag name
    pattern = f'<{tag_name}>(.*?)</{tag_name}>'
    
    # Search for the pattern in the text
    match = re.search(pattern, text, re.DOTALL)
    
    # Return the matched text if found, otherwise return None
    return match.group(1).strip() if match else None

# Example usage
text = """<action_title>
Operational Excellence Drives Stability Amid Claims Challenges
</action_title>"""

# Extract content using different tag names
title = extract_tag_content(text, "action_title")
print(title)  # Output: Operational Excellence Drives Stability Amid Claims Challenges

# Another example with different tags
sample_text = """<summary>
This is a summary of the document
</summary>
<body>
This is the main content
</body>"""

summary = extract_tag_content(sample_text, "summary")
body = extract_tag_content(sample_text, "body")

print(summary)  # Output: This is a summary of the document
print(body)    # Output: This is the main content

Funktionen können Standardwerte für Argumente haben. Diese werden verwendet, wenn kein Wert übergeben wird.

def greet(name="Welt"):
    return f"Hallo, {name}!"

print(greet())           # Hallo, Welt!
print(greet("Denis"))     # Hallo, Denis!

Funktionen mit variablen Argumenten (*args und **kwargs).

*args sammelt beliebig viele nicht-benannte Argumente als Tupel.

**kwargs sammelt beliebig viele benannte Argumente als Dictionary

def add_numbers(*args):
    return sum(args)

print(add_numbers(1, 2, 3))  # 6

def print_details(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_details(name="Denis", age=42)  
# name: Denis
# age: 42

Lambda-Funktionen

Kurznotation für einfache Funktionen, die oft als Argumente an andere Funktionen übergeben werden.

# Normale Funktion
def square(x):
    return x ** 2

# Lambda-Funktion
square_lambda = lambda x: x ** 2

print(square(4))          # 16
print(square_lambda(4))   # 16

# Verwendung in Funktionen wie `map`
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # [1, 4, 9, 16]

Die Funktion map() wird verwendet, um eine bestimmte Funktion auf jedes Element einer iterierbaren Datei (z. B. eine Liste oder ein Tupel) anzuwenden, und gibt ein map-Objekt zurück (das ein Iterator ist). In dem Beispiel wird es zusätzlich mit list() in eine Liste umgewandelt.

Dekoratoren für Funktionen

Dekoratoren sind Funktionen, die andere Funktionen erweitern oder verändern. Sie werden mit @ vor der Funktion angegeben. So haben wir die folgende Funktion, die den Benutzer begrüßt.

user = "Denis"

def say_hi(name):
    return f"Hi {name}"

print(say_hi(user)) # Output: Hi Denis

Diese kann mit einer Uppercase Funktion erweitert werden, ohne die bestehende Funktion zu verändern.

# Define decorator for uppercase conversion
def capitalize_output(func):
    def wrapper(name):
        result = func(name)  # Call the original function
        if isinstance(result, str):  # Check if the function returns a string
            return result.upper()  # Convert the string to uppercase
        return result  # Return the result as is if not a string
    return wrapper

# Apply the decorator to say_hi
@capitalize_output
def say_hi(name):
    return f"Hi {name}"

user = "Denis"
print(say_hi(user)) # Output : HI DENIS

Ein anderes Beispiel mit Debugging Dekorator. Dieser kann durch das auskommentieren #@debug ausgeschaltet werden.

# Debugging Dekorator
def debug(func):
    def wrapper(*args, **kwargs):
        print(f"Funktion {func.__name__} wird mit {args} und {kwargs} aufgerufen")
        result = func(*args, **kwargs)
        print(f"Ergebnis: {result}")
        return result
    return wrapper

@debug
def add(a, b):
    return a + b

add(3, 5)
# Funktion add wird mit (3, 5) und {} aufgerufen
# Ergebnis: 8

Klassen

Eine Klasse ist eine Blaupause für Objekte. Ein Objekt ist eine Instanz einer Klasse. Attribute sind Eigenschaften eines Objekts. Methoden sind Funktionen innerhalb einer Klasse.

Vererbung ermöglicht, von einer bestehenden Klasse zu erben und deren Funktionen zu erweitern. Polymorphismus – Verschiedene Objekte können die gleiche Methode unterschiedlich implementieren.

Grundstruktur einer Klasse:

class Fahrzeug:
    def __init__(self, marke, modell):
        self.marke = marke  # Attribut
        self.modell = modell

    def beschreibung(self):  # Methode
        return f"{self.marke} {self.modell}"
    
    def fahren(self):  # Methode
        return f"{self.marke} {self.modell} macht Wroom, WROOM"

# Objekt erstellen
auto = Fahrzeug("VW", "Polo")
print(auto.beschreibung())  # VW Polo
print(auto.fahren())  # VW Polo macht Wroom, WROOM

# Noch ein Objekt erstellen
auto2 = Fahrzeug("Tesla", "Model S")
print(auto2.beschreibung())  # Tesla Model S
print(auto2.fahren())  # Tesla Model S macht Wroom, WROOM

Die oben beschriebene Mulitplikation Funktion als Klasse

class Multiplier:
    def __init__(self, num1, num2):
        # Initialize with two numbers
        self.num1 = num1
        self.num2 = num2

    def multiply(self):
        # Multiply the numbers and return the result
        return self.num1 * self.num2

# User-provided inputs
number1 = 2
number2 = 3

# Create an instance of the class
multiplier = Multiplier(number1, number2)

# Call the multiply method and store the result in a variable
number3 = multiplier.multiply()

# Print the result
print(f"The result of multiplying {number1} and {number2} is {number3}")

System zur Verwaltung von Hotelzimmerbuchungen

class Zimmer:
    def __init__(self, nummer, betten, preis):
        self.nummer = nummer
        self.betten = betten
        self.preis = preis
        self.verfuegbar = True  # Standard: Verfügbar

    def buchen(self):
        if self.verfuegbar:
            self.verfuegbar = False
            print(f"Zimmer {self.nummer} wurde erfolgreich gebucht.")
        else:
            print(f"Zimmer {self.nummer} ist bereits belegt.")

    def freigeben(self):
        self.verfuegbar = True
        print(f"Zimmer {self.nummer} ist jetzt wieder verfügbar.")

    def beschreibung(self):
        status = "verfügbar" if self.verfuegbar else "belegt"
        return f"Zimmer {self.nummer}: {self.betten} Betten, {self.preis} €/Nacht, Status: {status}"

# Hauptprogramm
if __name__ == "__main__":
    # Zimmer erstellen
    zimmer1 = Zimmer(101, 2, 80)
    zimmer2 = Zimmer(102, 3, 120)

    # Beschreibung der Zimmer
    print(zimmer1.beschreibung()) # Output: Zimmer 101: 2 Betten, 80 €/Nacht, Status: verfügbar
    print(zimmer2.beschreibung()) # Output: Zimmer 102: 3 Betten, 120 €/Nacht, Status: verfügbar

    # Zimmer buchen
    zimmer1.buchen() # Output: Zimmer 101 wurde erfolgreich gebucht.
    print(zimmer1.beschreibung()) # Output: Zimmer 101: 2 Betten, 80 €/Nacht, Status: belegt

    # Belegtes Zimmer erneut buchen
    zimmer1.buchen() # Output: Zimmer 101 ist bereits belegt.

    # Zimmer freigeben
    zimmer1.freigeben() # Output: Zimmer 101 ist jetzt wieder verfügbar.
    print(zimmer1.beschreibung()) # Output: Zimmer 101: 2 Betten, 80 €/Nacht, Status: verfügbar

Vererbung ermöglicht es, eine neue Klasse von einer bestehenden Klasse abzuleiten. Die abgeleitete Klasse erbt alle Eigenschaften und Methoden der Basisklasse und kann sie erweitern oder überschreiben.

class Fahrzeug:
    def __init__(self, marke, modell):
        self.marke = marke
        self.modell = modell

    def beschreibung(self):
        return f"{self.marke} {self.modell}"

# Unterklasse erbt von Fahrzeug
class Elektrofahrzeug(Fahrzeug):
    def __init__(self, marke, modell, batterie_kapazitaet):
        super().__init__(marke, modell)  # Konstruktor der Basisklasse aufrufen
        self.batterie_kapazitaet = batterie_kapazitaet

    def beschreibung(self):  # Überschreiben der Methode
        return f"{super().beschreibung()} mit {self.batterie_kapazitaet} kWh Batterie"

# Objekte erstellen
auto1 = Fahrzeug("BMW", "X5")
auto2 = Elektrofahrzeug("Tesla", "Model 3", 75)

print(auto1.beschreibung())  # BMW X5
print(auto2.beschreibung())  # Tesla Model 3 mit 75 kWh Batterie
class Fahrzeug:
    def __init__(self, marke, modell):
        self.marke = marke  # Attribut
        self.modell = modell

    def beschreibung(self):  # Methode
        return f"{self.marke} {self.modell}"
    
    def fahren(self):  # Methode
        return f"{self.marke} {self.modell} macht Wroom, WROOM"
    
# Unterklasse erbt von Fahrzeug
class Elektrofahrzeug(Fahrzeug):
    def __init__(self, marke, modell, batterie_kapazitaet):
        super().__init__(marke, modell)  # Konstruktor der Basisklasse aufrufen
        self.batterie_kapazitaet = batterie_kapazitaet

    def beschreibung(self):  # Überschreiben der Methode
        return f"{super().beschreibung()} mit {self.batterie_kapazitaet} kWh Batterie"
    
    def fahren(self):  # Methode
        return f"{self.marke} {self.modell} macht Woosh"

# Objekt erstellen
auto_vw_polo = Fahrzeug("VW", "Polo")
print(auto_vw_polo.beschreibung())  # VW Polo
print(auto_vw_polo.fahren())  # VW Polo macht Wroom, WROOM

# Noch ein Objekt erstellen
auto_tesla_s = Elektrofahrzeug("Tesla", "Model 3", 75)
print(auto_tesla_s.beschreibung())  # Tesla Model 3 mit 75 kWh Batterie
print(auto_tesla_s.fahren())  # TTesla Model 3 macht Woosh

Kapselung schützt die Daten einer Klasse, indem Attribute als privat markiert werden. Dies erfolgt durch Doppelte Unterstriche (__).

class Konto:
    def __init__(self, inhaber, startguthaben):
        self.__inhaber = inhaber  # Privates Attribut
        self.__guthaben = startguthaben

    def einzahlen(self, betrag):
        if betrag > 0:
            self.__guthaben += betrag
            print(f"{betrag} € eingezahlt. Neues Guthaben: {self.__guthaben} €")
        else:
            print("Einzahlungsbetrag muss positiv sein.")

    def abheben(self, betrag):
        if 0 < betrag <= self.__guthaben:
            self.__guthaben -= betrag
            print(f"{betrag} € abgehoben. Neues Guthaben: {self.__guthaben} €")
        else:
            print("Unzureichendes Guthaben oder ungültiger Betrag.")

    def get_guthaben(self):  # Getter
        return self.__guthaben

# Objekt erstellen
konto = Konto("Anna", 500)
konto.einzahlen(200)
konto.abheben(100)
print(f"Aktuelles Guthaben: {konto.get_guthaben()} €")

Kann auf private Attribute nicht von außerhalb zugreifen. Folgendes geht nicht:

print(konto.__guthaben)
print(konto.__inhaber)

Allerdings sind „private“ Attribute in Python nicht wirklich privat. Denn ich kann folgendes machen:

print(konto._Konto__inhaber)
print(konto._Konto__guthaben)

Polymorphismus ermöglicht es, dass unterschiedliche Klassen die gleiche Methode mit spezifischem Verhalten implementieren. Verschiedene Klassen haben Methoden mit demselben Namen, aber unterschiedlicher Implementierung.

class Fahrzeug:
    def __init__(self, marke, modell):
        self.marke = marke  # Attribut
        self.modell = modell

    def beschreibung(self):  # Methode
        return f"{self.marke} {self.modell}"
    
    def fahren(self):  # Methode
        raise NotImplementedError("Diese Methode muss in der Unterklasse überschrieben werden")
    
class Vw(Fahrzeug):
    def fahren(self):
        return "Wroom"

class Tesla(Fahrzeug):
    def fahren(self):
        return "Woosh"
    
vw = Vw("VW", "Polo")
tesla = Tesla("Tesla", "Model 3")

print(vw.beschreibung())  # VW Polo
print(vw.fahren())  # Wroom

print(tesla.beschreibung())  # Tesla Model
print(tesla.fahren())  # Woosh

In diesem Beispiel erstellen wir ein Buchungssystem für verschiedene Fahrzeugtypen. Es kombiniert Vererbung, Kapselung und Polymorphismus.

Vererbung: Eine Basisklasse Fahrzeug wird erstellt, von der spezialisierte Klassen wie Auto und Motorrad erben.
Kapselung: Attribute wie __preis sind privat und nur über Getter und Setter zugänglich.
Polymorphismus: Jede Klasse implementiert ihre eigene Methode beschreibung.

class Fahrzeug:
    def __init__(self, marke, modell, preis):
        self.marke = marke
        self.modell = modell
        self.__preis = preis  # Privates Attribut

    def get_preis(self):  # Getter für Preis
        return self.__preis

    def set_preis(self, neuer_preis):  # Setter für Preis
        if neuer_preis > 0:
            self.__preis = neuer_preis
        else:
            print("Der Preis muss positiv sein.")

    def beschreibung(self):  # Polymorphe Methode
        return f"{self.marke} {self.modell} - Preis: {self.__preis} €"

# Vererbte Klassen
class Auto(Fahrzeug):
    def __init__(self, marke, modell, preis, sitzplaetze):
        super().__init__(marke, modell, preis)
        self.sitzplaetze = sitzplaetze

    def beschreibung(self):  # Überschreibt die Methode
        return f"Auto: {super().beschreibung()}, Sitzplätze: {self.sitzplaetze}"

class Motorrad(Fahrzeug):
    def __init__(self, marke, modell, preis, hubraum):
        super().__init__(marke, modell, preis)
        self.hubraum = hubraum

    def beschreibung(self):  # Überschreibt die Methode
        return f"Motorrad: {super().beschreibung()}, Hubraum: {self.hubraum}cc"

# Hauptprogramm
if __name__ == "__main__":
    # Objekte erstellen
    auto = Auto("Tesla", "Model S", 80000, 5)
    motorrad = Motorrad("Yamaha", "MT-07", 7500, 689)

    # Beschreibung der Fahrzeuge
    print(auto.beschreibung())   # Auto: Tesla Model S - Preis: 80000 €, Sitzplätze: 5
    print(motorrad.beschreibung())  # Motorrad: Yamaha MT-07 - Preis: 7500 €, Hubraum: 689cc

    # Preis anpassen (Kapselung)
    auto.set_preis(85000)
    print(f"Neuer Preis des Autos: {auto.get_preis()} €")  # Neuer Preis des Autos: 85000 €

    # Polymorphismus in Aktion
    def fahrzeug_beschreiben(fahrzeug):
        print(fahrzeug.beschreibung())

    fahrzeug_beschreiben(auto)       # Auto: Tesla Model S - Preis: 85000 €, Sitzplätze: 5
    fahrzeug_beschreiben(motorrad)   # Motorrad: Yamaha MT-07 - Preis: 7500 €, Hubraum: 689cc

Fehlerbehandlung mit try

Fehlerbehandlung mit try except finally.

try:
    zahl = int(input("Gib eine Zahl ein: "))
    ergebnis = 10 / zahl
    print(f"Ergebnis: {ergebnis}")
except ValueError:
    print("Bitte gib eine gültige Zahl ein.")
except ZeroDivisionError:
    print("Division durch Null ist nicht erlaubt.")
finally:
    print("Das Programm wurde beendet.")
12. Januar 2025/0 Kommentare/von Denis
Eintrag teilen
  • Teilen auf Facebook
  • Teilen auf X
  • Teilen auf WhatsApp
  • Teilen auf Pinterest
  • Teilen auf LinkedIn
  • Teilen auf Tumblr
  • Teilen auf Vk
  • Teilen auf Reddit
  • Per E-Mail teilen
https://www.denisreis.com/wp-content/uploads/2024/12/pexels-koprivakart-3280908.jpg 1277 1919 Denis https://www.denisreis.com/wp-content/uploads/2016/09/logo.png Denis2025-01-12 10:27:002026-04-24 20:39:31Python Spickzettel
Das könnte Dich auch interessieren
Python Pandas und NumPy in SAP Datasphere Datenflüssen nutzen Python Pandas und NumPy in SAP Datasphere Datenflüssen nutzen
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.

Stay connected

  • RSS abonnieren
  • XING
  • LinkedIn
  • Twitter
  • Facebook
  • Newsletter

Ich lese gerade

12 Rules for Life: An Antidote to Chaos

Kategorien

  • Allgemein
  • BPC
  • Buchnotizen
  • CSS
  • Excel
  • How-To Tutorials SAP BI BA
  • Know-How SAP
  • Projektmanagement und Führung
  • VBA

Hörfutter

Hol dir ein kostenloses Hörbuch!

Anzeige

Beliebt
  • Bestimmte Zeilen in eine andere Tabelle kopieren
    Excel VBA – Bestimmte Zeilen in eine andere Tabelle...9. März 2014 - 22:14
  • Excel VBA - Wie Sie den Blattschutz ohne Kennwort aufheben
    Excel VBA – Wie Sie den Blattschutz ohne Kennwort...24. Oktober 2017 - 12:58
  • Excel VBA - Zeichen ersetzen mit Replace
    Excel VBA – Zeichen ersetzen mit Replace12. Oktober 2014 - 20:15
  • Wie sie das aktuelle Datum in einer Liste finden
    Excel VBA – Wie Sie das aktuelle Datum in einer Liste...30. Januar 2018 - 12:57
Kürzlich
  • Datasphere CLI einrichten
    Wie Sie Datasphere CLI einrichten20. Juni 2026 - 10:57
  • Linux Spickzettel
    Linux Spickzettel24. April 2026 - 20:38
  • SAP Datasphere als Remote Quelle für SAP HANA nutzen
    SAP Datasphere als Remote Quelle für SAP HANA nutzen23. März 2026 - 09:27
  • Markdown Syntax Spickzettel
    Markdown Spickzettel25. Februar 2026 - 22:14
Kommentare
  • PaulSuper Artikel, leider gibt es diesen FuBa bei BW/4HANA 2023...3. März 2026 - 13:34 von Paul
  • MichaelHallo, ich habe diesen Beitrag gefunden, gerade der Tipp...1. August 2023 - 14:52 von Michael
  • CarportDanke für die tolle Arbeit die hier geleistet wurde, hier...14. Februar 2023 - 12:15 von Carport
  • Tobias IsenbergHi, kann nur davon abraten/warnen, das Sprachpaket zu...19. Oktober 2022 - 14:31 von Tobias Isenberg

Werbung

Schlagwörter

ABAP AI Analysis Aufwandsschätzung BAdI berechtigungen BPC BTP Controlling CSS Datasphere Delegation Design Studio EPM EvDRE Excel HTML JavaScript Meeting PM Prozessketten Python SAC SAP Script Logic Scrum SQL SQLScript Tabellen Transformationsroutinen Tutorial VBA Workshop

Archiv

  • Juni 2026
  • April 2026
  • März 2026
  • Februar 2026
  • Januar 2026
  • Dezember 2025
  • November 2025
  • Oktober 2025
  • September 2025
  • August 2025
  • Juli 2025
  • Juni 2025
  • Mai 2025
  • April 2025
  • März 2025
  • Februar 2025
  • Januar 2025
  • Dezember 2024
  • November 2024
  • Oktober 2024
  • September 2024
  • August 2024
  • Juli 2024
  • Juni 2024
  • Mai 2024
  • April 2024
  • März 2024
  • Februar 2024
  • Januar 2024
  • Dezember 2023
  • November 2023
  • Oktober 2023
  • September 2023
  • August 2023
  • Juli 2023
  • Juni 2023
  • Mai 2023
  • April 2023
  • März 2023
  • Februar 2023
  • Januar 2023
  • Dezember 2022
  • November 2022
  • Oktober 2022
  • September 2022
  • August 2022
  • Juli 2022
  • Juni 2022
  • Mai 2022
  • April 2022
  • März 2022
  • Februar 2022
  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021
  • August 2021
  • Juli 2021
  • Juni 2021
  • Mai 2021
  • April 2021
  • März 2021
  • Februar 2021
  • Januar 2021
  • Dezember 2020
  • November 2020
  • Oktober 2020
  • September 2020
  • August 2020
  • Juli 2020
  • Juni 2020
  • Mai 2020
  • April 2020
  • März 2020
  • Februar 2020
  • Januar 2020
  • Dezember 2019
  • November 2019
  • Oktober 2019
  • September 2019
  • August 2019
  • Juli 2019
  • Juni 2019
  • Mai 2019
  • April 2019
  • März 2019
  • Februar 2019
  • Januar 2019
  • Dezember 2018
  • November 2018
  • Oktober 2018
  • Juli 2018
  • Juni 2018
  • Mai 2018
  • April 2018
  • März 2018
  • Februar 2018
  • Januar 2018
  • Dezember 2017
  • November 2017
  • Oktober 2017
  • September 2017
  • August 2017
  • Juli 2017
  • Juni 2017
  • Mai 2017
  • April 2017
  • März 2017
  • Februar 2017
  • Januar 2017
  • Dezember 2016
  • November 2016
  • Oktober 2016
  • September 2016
  • August 2016
  • Juli 2016
  • Juni 2016
  • Mai 2016
  • April 2016
  • März 2016
  • Februar 2016
  • Januar 2016
  • Dezember 2015
  • November 2015
  • Oktober 2015
  • September 2015
  • August 2015
  • Juli 2015
  • Juni 2015
  • Mai 2015
  • April 2015
  • März 2015
  • Februar 2015
  • Januar 2015
  • Dezember 2014
  • November 2014
  • Oktober 2014
  • September 2014
  • August 2014
  • Juli 2014
  • Juni 2014
  • Mai 2014
  • April 2014
  • März 2014
  • Februar 2014
  • Januar 2014
  • Dezember 2013
  • November 2013
  • Oktober 2013
  • September 2013
  • August 2013
  • Juli 2013
  • Juni 2013
  • Mai 2013
  • April 2013
  • März 2013
  • Februar 2013
  • Januar 2013
  • Dezember 2012
  • November 2012
  • Oktober 2012
  • September 2012
  • August 2012
  • Juli 2012
  • Juni 2012
  • Mai 2012
  • April 2012
  • März 2012
  • Februar 2012
  • Januar 2012
© Copyright - Denis Reis - Lumen accipe et imperti - Impressum - Datenschutz
  • Link zu X
  • Link zu Facebook
  • Link zu Xing
  • Link zu LinkedIn
  • Link zu Rss dieser Seite
  • Link zu Mail
Link to: SQL Spickzettel Link to: SQL Spickzettel SQL SpickzettelSQL Spickzettel Link to: JavaScript Spickzettel Link to: JavaScript Spickzettel JavaScript SpickzettelJavaScript Spickzettel
Nach oben scrollen Nach oben scrollen Nach oben scrollen

Diese Website benutzt Cookies. Wenn du die Website weiter nutzt, erteilst du eine Einverständniserklärung zur Erhebung personenbezogener Daten nach der DSGVO. Weitere Informationen zu Cookies und insbesondere dazu, wie Sie deren Verwendung widersprechen können, finden Sie in unseren Datenschutzhinweisen.

Akzeptieren


Wie wir Cookies verwenden

Wir können Cookies anfordern, die auf Ihrem Gerät eingestellt werden. Wir verwenden Cookies, um uns mitzuteilen, wenn Sie unsere Websites besuchen, wie Sie mit uns interagieren, Ihre Nutzererfahrung verbessern und Ihre Beziehung zu unserer Website anpassen.

Klicken Sie auf die verschiedenen Kategorienüberschriften, um mehr zu erfahren. Sie können auch einige Ihrer Einstellungen ändern. Beachten Sie, dass das Blockieren einiger Arten von Cookies Auswirkungen auf Ihre Erfahrung auf unseren Websites und auf die Dienste haben kann, die wir anbieten können.

Notwendige Website Cookies

Diese Cookies sind unbedingt erforderlich, um Ihnen die auf unserer Webseite verfügbaren Dienste und Funktionen zur Verfügung zu stellen.

Da diese Cookies für die auf unserer Webseite verfügbaren Dienste und Funktionen unbedingt erforderlich sind, hat die Ablehnung Auswirkungen auf die Funktionsweise unserer Webseite. Sie können Cookies jederzeit blockieren oder löschen, indem Sie Ihre Browsereinstellungen ändern und das Blockieren aller Cookies auf dieser Webseite erzwingen. Sie werden jedoch immer aufgefordert, Cookies zu akzeptieren / abzulehnen, wenn Sie unsere Website erneut besuchen.

Wir respektieren es voll und ganz, wenn Sie Cookies ablehnen möchten. Um zu vermeiden, dass Sie immer wieder nach Cookies gefragt werden, erlauben Sie uns bitte, einen Cookie für Ihre Einstellungen zu speichern. Sie können sich jederzeit abmelden oder andere Cookies zulassen, um unsere Dienste vollumfänglich nutzen zu können. Wenn Sie Cookies ablehnen, werden alle gesetzten Cookies auf unserer Domain entfernt.

Wir stellen Ihnen eine Liste der von Ihrem Computer auf unserer Domain gespeicherten Cookies zur Verfügung. Aus Sicherheitsgründen können wie Ihnen keine Cookies anzeigen, die von anderen Domains gespeichert werden. Diese können Sie in den Sicherheitseinstellungen Ihres Browsers einsehen.

Andere externe Dienste

Wir nutzen auch verschiedene externe Dienste wie Google Webfonts, Google Maps und externe Videoanbieter. Da diese Anbieter möglicherweise personenbezogene Daten von Ihnen speichern, können Sie diese hier deaktivieren. Bitte beachten Sie, dass eine Deaktivierung dieser Cookies die Funktionalität und das Aussehen unserer Webseite erheblich beeinträchtigen kann. Die Änderungen werden nach einem Neuladen der Seite wirksam.

Google Webfont Einstellungen:

Google Maps Einstellungen:

Google reCaptcha Einstellungen:

Vimeo und YouTube Einstellungen:

Datenschutzrichtlinie

Sie können unsere Cookies und Datenschutzeinstellungen im Detail in unseren Datenschutzrichtlinie nachlesen.

Datenschutz
Einstellungen akzeptieren