Найти - Пользователи
Полная версия: Как улучшить стиль программы?
Начало » Python для новичков » Как улучшить стиль программы?
1 2 3 4 5
PEHDOM
heyfec Уберите классы, это не улучшение, это лишняя сущность. Не нужно использовать классы там где можно обойтись просто функциями или даже без онных. У вас класс как пятое колесо в телеге. Да еще с кучей глобальных переменных внутри.Это вообще дичь:
     
def __init__(self):    # инициализирует переменные и запускает функции на выполнение
        global den
        global cur
        global conn
        global session
        global Session
        global engine
        global dbPath
        global emp
        global metadata
        global k
        global data0
А вот это:
         self.create_emp=self.create_emp()
        self.print_emp=self.print_emp()
        self.create_table_emp_for_alchemy=self.create_table_emp_for_alchemy()
        self.print_table_emp_alchemy=self.print_table_emp_alchemy()
вобще за пределами добра и зла. Такое впечатление что вы не представляете вообще что делаете.

По поводу “оптимизации”
Ну вот смотрите у вас в нескольких местах используется конструкци
=sqlite3.connect('datafile2.db'), почему бы вам не вынести ‘datafile2.db’ в отдельную переменну в начале скрипта , типа:
DB_PATH = ‘datafile2.db’
а потом внутри:
=sqlite3.connect('DB_PATH')
это существенно улучшит как читаемость скрипта, так и дальнейшую работу с ним, потому что если, например, вам нужно будет поменять datafile2.db на datafile3.db вы это сделаете только в одном месте, вместо того чтобы искать и менять по всему скрипту. таже фигня с ‘example.db’, может еще с какими значениями, это так первое что на глаза попалось.
Вот у вас есть повторяющиеся два раза куски кода типа:
         engine = create_engine('sqlite:///%s' % dbPath)
        metadata = MetaData(engine)
        emp = Table('emp', metadata, Column('id', Integer, primary_key=True), Column('name', String), Column('salary', Integer), Column('dept', Integer),)
        Session = sessionmaker(bind=engine)
        session = Session()
        metadata.create_all(engine)
Очевидно что их можно вынести в отдельную функцию.

Вот у вас повсторяюстья много раз подряд простыня cur.execute('''blah blah blah'''), возможно стит все ‘'’blah blah blah''' вынести в отдельный список или многострочный литерал, и потом в цикле для каждой строки делать cur.execute(line) ну и тд…

heyfec
еще
heyfec
PEHDOM
heyfec Уберите классы, это не улучшение, это лишняя сущность. Не нужно использовать классы там где можно обойтись просто функциями или даже без онных. У вас класс как пятое колесо в телеге. Да еще с кучей глобальных переменных внутри.Это вообще дичь:
Спасибо обязательно воспользуюсь вашими советами
heyfec
еще
xam1816
heyfec
self.create_table_stocks_and_insert_table_stocks_and_print_table_stocks_and_drop_table_stocks=self.create_table_stocks_and_insert_table_stocks_and_print_table_stocks_and_drop_table_stocks()
Ты делаешь какие-то шаги в бездну
Расскажи вкратце какую задачу решает твоя программа,с какой проблемой ты столкнулся,которая теперь решает эта программа
heyfec
Вроде этого?
heyfec
Вот чего пока получилось
PEHDOM
heyfec
Вроде этого?
скорее вроде этого:
 SQL_QUERY0 = '''CREATE TABLE emp(name text,salary real, dept real, id integer, CONSTRAINT id_pk PRIMARY KEY (id))
INSERT INTO emp VALUES('tyrion', 100000, 2, 1)
INSERT INTO emp VALUES('jon', 100, 3, 2)
INSERT INTO emp VALUES('daenerys', 10000, 4, 3)
INSERT INTO emp VALUES('daenerys', 12000, 12, 4)
INSERT INTO emp VALUES('daenerys', 15000, 40, 5)
INSERT INTO emp VALUES('daenerys', 40000, 62, 6)
ALTER TABLE emp ADD COLUMN deptis integer
ALTER TABLE emp RENAME COLUMN deptis TO rt'''
....
for line in SQL_QUERY0.split('\n'):
   cur.executet(line)
или даже заменить это все на один executescript() если вам нужно сразу много подряд комманд выполнить.
https://docs.python.org/2/library/sqlite3.html#sqlite3.Cursor.executescript

в данном контекесте вот такой вынос функции вообще лишний,
 def execute_sql_query(SQL_QUERY):
    cur.execute(SQL_QUERY)
он ничего не дает по сравнению если бы вы просто писали cur.execute(SQL_QUERY)
heyfec
Ну пожалуй пока хватит улучшений потом продолжу всем спасибо за советы
py.user.next
heyfec
Ну пожалуй пока хватит улучшений потом продолжу
Да, подучись сначала, а потом делай. Провозился просто впустую и ничего не достиг. Программа простенькая, а сделать ты её не можешь, так как знаний нет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB