Не могу считать с фаила json данные

Мне необходимо написать функцию, которая считает эти данные из файла. Параметр функции - имя файла. Я делаю следующее:

def open_json_data("data.json"):
    with open("data.json", "r", encoding="utf-8") as json_file:
        new_data = json.load(json_file)
    return new_data

dict_list = open_json_data()

В итоге выдает ошибку:

def open_json_data("data.json"):
                       ^
SyntaxError: invalid syntax

Часть кода в фаиле json:

[
{"name": "Alhazen",
 "years": "c. 965 – c. 1040"
 {"name": "Archimedes",
 "years": "c. 287 BC – 212 BC."}

]

В чем может быть проблема?


Ответы (2 шт):

Автор решения: MaxU

Идея использования параметров функции в том, чтобы можно было вызывать одну функцию с разными значениями параметров. Вы же жестко закодировали единственное имя файла. Сделайте лучше так:

def open_json_data(filename="data.json", encoding="utf-8"):
    with open(filename, "r", encoding=encoding) as json_file:
        new_data = json.load(json_file)
    return new_data

PS причина SyntaxError в том, что вместо имени параметра функции вы используете константную строку (литерал).

→ Ссылка
Автор решения: DarkPyDeu

Если код надо будет часто редактировать или много где открывать файл, делайте так:

def open_json_data(file):
    with open(file, "r", encoding="utf-8") as json_file:
        new_data = json.load(json_file)
    return new_data

и вызывать функцию так:

open_json_data("data.json")
→ Ссылка