Eine blutige Anfängerfrage:
Gibt es bei Funktionen die Möglichkeit die Werte innerhalb der Paranthesis mit Parametern zu ersetzen und diese global zu definieren?
Es geht um eine vordefinierte Funktion die ich nicht bearbeiten kann, das sie in einem Skript steht, die immer geupdatet wird, aber deren Werte ich gerne global an einer Stelle definieren würde, da sie öfter vorkommt.
function(enabled=True, value_a=200, value_b=100)
Die Werte 100 und 200 würde ich gerne durch Parameter ersetzen, dass man dann nur noch den Parameter an einer Stelle definieren muss und nicht mehr an jeder Stelle wenn man die Funktion benutzt.
value_a = '200'
value_b = '100'
function(enabled=True, value_a, value_b)
Leider weiß ich nicht wie ich das programmiere muss, könnte mir das jemand weiterhelfen?
Ich bitte um Verzeihung wenn ich nicht immer die richtigen Begriffe benutzt habe.
Dank schonmal im Voraus <3
Values von Funktion mit Parametern ersetzen
Der naheliegende Weg das zu tun besteht einfach darin, sich eine eigene Funktion zu machen, die das tut.
Dann benutzt du eben deine default_function, und das war's auch schon.
Alternativ kannst du mit functools partial arbeiten:
Nachteil daran ist, dass es jetzt nicht mehr moeglich ist, default_function mit etwas *anderem* aufzurufen fuer die festgezurrten Parameter. Das geht nur mit dem ersten Vorgehen.
Code: Alles auswählen
def default_function(value_a=200, value_b=100, ...):
function(value_a, value_b)
Alternativ kannst du mit functools partial arbeiten:
Code: Alles auswählen
default_function = functools.partial(function, value_a=100, value_b=200)
-
- User
- Beiträge: 2
- Registriert: Montag 2. Dezember 2019, 16:00
Vielen lieben Dank für die schnelle Antwort!! Leider erhielt ich nun unterschiedliche Fehlermeldungen. Beim Verwenden von functools NameError, dass die Funktion nicht definiert wurde.
Vielleicht poste ich mal den echten Code, da ich nicht in der Lage bin, zu erklären wie die einzelnen Bausteine zusammenwirken.
Aus dem Hauptskript, die Funktion die unverändert bleiben soll:
Und hier das Skript, das die Funktion mit veränderten Werten benutzen soll:
Danke erneut schon im Voraus für die Hilfe!
Vielleicht poste ich mal den echten Code, da ich nicht in der Lage bin, zu erklären wie die einzelnen Bausteine zusammenwirken.
Aus dem Hauptskript, die Funktion die unverändert bleiben soll:
Code: Alles auswählen
def set_relationship_bounds(
self,
enabled: bool = False,
potency_ratio: float = None,
delimit_by_numbers: bool = None,
min_posts: int = None,
max_posts: int = None,
max_followers: int = None,
max_following: int = None,
min_followers: int = None,
min_following: int = None,
):
"""Sets the potency ratio and limits to the provide an efficient
activity between the targeted masses"""
self.potency_ratio = potency_ratio if enabled is True else None
self.delimit_by_numbers = delimit_by_numbers if enabled is True else None
self.max_followers = max_followers
self.min_followers = min_followers
self.max_following = max_following
self.min_following = min_following
self.min_posts = min_posts if enabled is True else None
self.max_posts = max_posts if enabled is True else None
Code: Alles auswählen
## logins
insta_username = '****'
insta_password = '****'
## restrictions global
default_function = functools.partial(function, enable=True, max_followers=10)
## create session
session = InstaPy(username=insta_username,
password=insta_password)
## session login
session.login()
with smart_run(session):
## restriction local
session.default_function()
- __blackjack__
- User
- Beiträge: 13116
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@qwertiop27: Der Name `functools` existiert nur wenn man das Modul vorher importiert. Und einfach so `function` als erstes Argument zu schreiben geht natürlich auch nicht, da muss schon das Funktionsobjekt hin dessen Argumente partiell gebunden werden sollen. Da Du aber eine Methode hast, bräuchtest Du an der Stelle bereits ein Exemplar von dem Typ auf dem die Methode definiert ist.
Ganz ehrlich sehe ich auch nicht warum Du die Argumente nicht einfach ganz normal übergeben kannst. Definiert Dir halt in Deinem Programm Konstanten deren Werte dann beim Aufruf übergeben werden.
Ganz ehrlich sehe ich auch nicht warum Du die Argumente nicht einfach ganz normal übergeben kannst. Definiert Dir halt in Deinem Programm Konstanten deren Werte dann beim Aufruf übergeben werden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman