Dangerous default value [] as argument
113 return giveaway
114
115 @staticmethod
116 def add_giveaway(id: int, channel: int, name: str, entries: list, winners: int, ended: bool = False, prev_winners=[]) -> None:117 """
118 Add a giveaway to the database.
119 Parameters
Description
Do not use a mutable like list
or dictionary
as a default value to an argument. Python’s default arguments are evaluated once when the function is defined. Using a mutable default argument and mutating it will mutate that object for all future calls to the function as well.
Bad practice
def my_function(elem, l=[]):
l.append(elem)
return l
print(my_function(2)) # [2]
print(my_function(5)) # [2, 5]
Recommended:
def my_function(elem, l=None):
if l is None:
l = []
l.append(elem)
return l
print(my_function(2)) # [2]
print(my_function(5)) # [5]