None в качестве значения по умолчанию и создавать изменяемый объект внутри функции.def func(a=1, b) недопустимо.  Аргументы со значениями по умолчанию должны идти в конце списка аргументов.Существуют несколько важных ограничений, которые необходимо учитывать при использовании аргументов со значениями по умолчанию в Python:
def append_to_list(value, my_list=[]):  # ОПАСНО! Список является изменяемым.
    my_list.append(value)
    return my_list
print(append_to_list(1))  # [1]
print(append_to_list(2))  # [1, 2] - Неожиданно!
print(append_to_list(3))  # [1, 2, 3] - Неожиданно!
# Правильное решение:
def append_to_list_correct(value, my_list=None):
    if my_list is None:
        my_list = []
    my_list.append(value)
    return my_list
print(append_to_list_correct(1))  # [1]
print(append_to_list_correct(2))  # [2]
print(append_to_list_correct(3))  # [3]
      
def my_function(a=1, b): # SyntaxError: non-default argument follows default argument
    print(a, b)
      
def my_function(b, a=1):
    print(a, b)
my_function(2)      # 1 2
my_function(2, a=3) # 3 2
      В целом, понимание этих ограничений и особенностей позволяет писать более надежный и предсказуемый код на Python.