Как разделить программу на несколько файлов python

Разбиение приложения на части происходит с помощью чертежей — Blueprints.

Прочитать про них подробнее можно здесь .

В этой статье — руководство к действию

Предпосылки

У вас есть основной файл __init__.py или app.py в котором вы уже создали приложение Flask

Допустим, у вас есть группа url вида

и группа url вида

Те url, которые начинаются на second вы хотите выделить в отдельное подприложение, или просто хотите разбить главный файл на части, чтобы было проще искать нужный код.

Нужно будет сделать несколько действий, первое из которых — создание нового .py файла

Новый файл

Создайте рядом с главным файлом новый файл second.py

Импортируйте туда всё, что было нужно для работы + functools

Из flask обязательно импортируйте Blueprint это ключевой модуль для данной операции.

import functools from flask import ( Blueprint, flash, g, redirect, render_template, request, session, url_for ) from werkzeug.security import check_password_hash, generate_password_hash

Прекрати писать код в ОДНОМ файле Python | ТОП 5 Ошибок и создание правильной архитектуры

После импорта добавьте строку

bp = Blueprint(‘api’, __name__, url_prefix=’/second’)

url_prefix=’/second’ означает, что все url в этом подприложении будут начинаться с second

Файл second.py готов

Читайте также:
К программам пенсионного накопления относятся

Регистрация нового чертежа

Теперь в главном файле, скорее всего он называется __init__.py удалите перемещённые url

И зарегистрируйте новое подприложение прописав его чертёж

from . import second app.register_blueprint(second.bp)

url_for

Вы, скорее всего, пользовались url_for и в оригинальном файле это выглядело примерно так:

То теперь нужно заменить / на .

Шаблоны для порядка тоже имеет смысл переложить в отдельную папку templates/

open_resource

Если раньше вы писали with app.open_resource теперь нужно писать with bp.open_resource

def load_db(): with bp.open_resource(‘file.json’) as f: return json.load(f)

Источник: www.andreyolegovich.ru

разделить исходный код Python на несколько файлов?

У меня есть код, который я хочу разделить на несколько файлов. В Matlab можно просто вызвать файл .m , и до тех пор, пока он не определен как что-либо в частности, он просто запустится так, как если бы он был частью вызываемого кода. Пример (отредактированный):
test.m (matlab)

function [] = test() . some code using variables . test2
test2.m (matlab)
. some more code using same variables .

Вызов test запускает код в тесте, а также код в test2. Есть ли аналогичный способ для python поместить . some more code . во внешний файл, который будет просто читаться так, как если бы он находился в файле, из которого он вызван?

Markus 13 сен. 2012, в 21:12
Поделиться
Borgleader 13 сен. 2012, в 18:34
Прочитайте ваш любимый учебник по Python и узнайте о модулях
Andreas Jung 13 сен. 2012, в 18:35

Разбиваем проект на файлы

Поделиться:

4 ответа

Лучший ответ

Я изучаю использование модуля в python только сейчас и думал, что отвечу на вопрос, который Маркус просит в комментариях выше ( «Как импортировать переменные, когда они встроены в модули?» ) с двух сторон:

  • переменная/функция и
  • свойство/метод класса.
Читайте также:
Как пользоваться программой даймон тулс лайт

Вот как я переписал основную программу f1.py, чтобы продемонстрировать повторное использование переменной для Markus:

import f2 myStorage = f2.useMyVars(0) # initialze class and properties for i in range(0,10): print «Hello, » f2.print_world() myStorage.setMyVar(i) f2.inc_gMyVar() print «Display class property myVar:», myStorage.getMyVar() print «Display global variable gMyVar:», f2.get_gMyVar()

Вот как я могу переписать повторно используемый модуль f2.py:

# Module: f2.py # Example 1: functions to store and retrieve global variables gMyVar = 0 def print_world(): print «World!» def get_gMyVar(): return gMyVar # no need for global statement def inc_gMyVar(): global gMyVar gMyVar += 1 # Example 2: class methods to store and retrieve properties class useMyVars(object): def __init__(self, myVar): self.myVar = myVar def getMyVar(self): return self.myVar def setMyVar(self, myVar): self.myVar = myVar def print_helloWorld(self): print «Hello, World!»

Когда выполняется f1.py, это будет выглядеть так:

%run «f1.py» Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! Hello, World!

Hello, World! Hello, World! Hello, World! Hello, World! Display class property myVar: 9 Display global variable gMyVar: 10

Я думаю, что точка Маркуса была бы следующей:

  • Чтобы повторно использовать код модуля более одного раза, введите код модуля в функций или классов,
  • Чтобы повторно использовать переменные, хранящиеся как свойства в модулях, инициализируйте свойства внутри класса и добавить методы «getter» и «setter», чтобы переменные не обязательно должны быть скопированы в основную программу,
  • Чтобы повторно использовать переменные, хранящиеся в модулях, инициализируйте переменные и используйте функции геттера и сеттера. Функции сеттера объявили бы переменные как глобальные.

Источник: overcoder.net

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Разделить программу на несколько файлов

#1 Окт. 25, 2018 12:19:03

Разделить программу на несколько файлов

Добрый день.
Подскажите пожалуйста как разбить программу на несколько файлов.

Читайте также:
Что такое программа ocr

import test2 test()

Файл test2.py
def test(): print(‘ok’)

name ‘test’ is not defined

Отредактировано Ubhra (Окт. 25, 2018 14:58:32)

#2 Окт. 25, 2018 14:03:03

Разделить программу на несколько файлов

Ubhra
Подскажите пожалуйста как разбить программу на несколько файлов.

а откуда функция create_config() в файле test1.py? ошибка name ‘test’ is not defined вообще не понятна откуда взялась. у меня ваш код выдал NameError: name ‘create_config’ is not defined что и должно быть о чем написал в начале поста.
Файл test1.py

import test2 create_config = test2.test create_config()

#3 Окт. 25, 2018 14:58:46

Разделить программу на несколько файлов

#4 Окт. 25, 2018 17:09:25

Разделить программу на несколько файлов

Я так полагаю, тут разные пространства имен.

#5 Окт. 25, 2018 19:00:20

Разделить программу на несколько файлов

test1.py
package
__init__.py
test2.py

from package import * test()

Файл __init__.py
import test2.py

Файл test1.py
def test(): print(‘ok’)

No module named ‘test2’

#6 Окт. 26, 2018 01:41:40

Разделить программу на несколько файлов

слушайте, ну не мучайте себя и других, ну сходите почитайте учебник,книгу по питону. Ну основы основ… милион раз описаны. А вы тут методом тыка пытаетесь познать истину, там где этого не надо

_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Источник: python.su

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru