Как можно описать функцию "работает" в коде, которая является модулем и вызывается из файла osnova.py?
1. Да, следует закрывать файл внутри определения функции, чтобы избежать утечки ресурсов. Например, можно использовать конструкцию `with open(filename) as file`.
2. Для описания функции "работает", которая является модулем и вызывается из файла osnova.py, можно создать файл с именем "работает.py" со следующим содержимым:
```python
def работает():
print("Функция 'работает' выполнена.")
```
Затем в файле osnova.py можно импортировать эту функцию и вызвать ее:
```python
from работает import работает
работает()
```
По хорошему нужно.
Посмотрите еще в сторону контекстных менеджеров. Это конструкция вида
With open() as f
....
Сейчас у вашего кода один минус:
если будет исключение до закрытия файла, то файл будет открыт до конца обработки исключения.
Если не делать f.close(), то будет второй минус:
в зависимости от реализации питона, коллектор мусора может не успеть закрыть файл до его следующего применения
Поэтому: используйте with .