Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Чистый Python тонкости программирования для профи: как не попасть в ловушки?

  1. Чистый Python тонкости программирования для профи: как не попасть в ловушки?

    Привет, гуру Python! Хотелось бы обсудить различного рода тонкости при написании чистого Python-кода.
    Какие фишки и трюки вы используете, чтобы код оставался чистым и лёгким для понимания? Может у кого-то
    есть примеры кода или историй, где из-за каких-то особенностей или багов в Python приходилось проявлять
    чудеса смекалки? Окажитесь ли вы в неожиданных ситуациях, когда старались писать чисто, но что-то пошло
    не так? Поделитесь своими случаями и примерами.



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Чистый код - это, конечно, круто, но не всегда просто. Вот, например, одна распространённая ошибка -
    использование изменяемых типов данных как аргументы по умолчанию в функциях. Простой пример:

    Программный код:
    def add_element_to_list(elementlst=[]):
    lst.append(element)
    return 
    lst

    # Вызов функции
    print(add_element_to_list(1))  # Ожидаем [1]
    print(add_element_to_list(2))  # Ожидаем [2], но получаем [1, 2] 
    Всё из-за того, что значение аргумента lst сохраняется между вызовами функции. Как правильно:

    Программный код:
    def add_element_to_list(elementlst=None):
    if 
    lst is None:
    lst = []
    lst.append(element)
    return 
    lst 
    Попадали ли вы в такие ситуации?

  4. Цитата Сообщение от Dbrnjh
    Чистый код - это, конечно, круто, но не всегда просто. Вот, например, одна распространённая ошибка -
    использование изменяемых типов данных как аргументы по умолчанию в функциях. Простой пример:

    Программный код:
    def add_element_to_list(elementlst=[]):
    lst.append(element)
    return 
    lst

    # Вызов функции
    print(add_element_to_list(1))  # Ожидаем [1]
    print(add_element_to_list(2))  # Ожидаем [2], но получаем [1, 2] 
    Всё из-за того, что значение аргумента lst сохраняется между вызовами функции. Как правильно:

    Программный код:
    def add_element_to_list(elementlst=None):
    if 
    lst is None:
    lst = []
    lst.append(element)
    return 
    lst 
    Попадали ли вы в такие ситуации?
    Да-да, известные грабли. Интересно, как ещё ребята решают этот факап.

  5. Частенько сталкиваюсь с тем, что начинающие разработчики плохо понимают работу с контекстными менеджерами
    в Python. Например, вот такой пример:

    Программный код:
    with open('file.txt''r') as file:
    data file.read()
    # Обработка данных 
    Всё супер, пока дело не доходит до чтения больших файлов. Новички часто забывают о том, что лучше
    использовать 'with' для правильного управления файлами.

  6. Цитата Сообщение от Shuzik
    Частенько сталкиваюсь с тем, что начинающие разработчики плохо понимают работу с контекстными менеджерами
    в Python. Например, вот такой пример:

    Программный код:
    with open('file.txt''r') as file:
    data file.read()
    # Обработка данных 
    Всё супер, пока дело не доходит до чтения больших файлов. Новички часто забывают о том, что лучше
    использовать 'with' для правильного управления файлами.
    Ё-моё, помню как-то влепился по поводу контекстников. Спасибо, что напомнил.

  7. Моя любимая фишка: list comprehensions и генераторы. Они позволяют сократить код и сделать его более
    читабельным. Например:

    Программный код:
    squares = [x**for x in range(10)] 
    И если нужно обрабатывать большой набор данных, лучше использовать генераторы:

    Программный код:
    big_data = (x**for x in range(10**6))
    for 
    value in big_data:
    # Обработка value 
    Генераторы безопаснее в плане использования памяти.

  8. Цитата Сообщение от Thomasimpuh
    Моя любимая фишка: list comprehensions и генераторы. Они позволяют сократить код и сделать его более
    читабельным. Например:

    Программный код:
    squares = [x**for x in range(10)] 
    И если нужно обрабатывать большой набор данных, лучше использовать генераторы:

    Программный код:
    big_data = (x**for x in range(10**6))
    for 
    value in big_data:
    # Обработка value 
    Генераторы безопаснее в плане использования памяти.
    Да, list comprehensions - наше всё! Можно замедленно хлопнуть курсором.

  9. Универсальный совет: всегда используй логирование! Вместо print() везде впихивай logging. Просто пример:

    Программный код:
    import logging
    logging
    .basicConfig(level=logging.DEBUG)
    logging.debug('Это сообщение отладочное')
    logging.info('Это информационное сообщение')
    logging.warning('Это предупреждение')
    logging.error('Это ошибка')
    logging.critical('Это критическое сообщение'
    Поможет лучше понимать, что происходит в коде и быстрее находить баги.

  10. Цитата Сообщение от Ikar
    Универсальный совет: всегда используй логирование! Вместо print() везде впихивай logging. Просто пример:

    Программный код:
    import logging
    logging
    .basicConfig(level=logging.DEBUG)
    logging.debug('Это сообщение отладочное')
    logging.info('Это информационное сообщение')
    logging.warning('Это предупреждение')
    logging.error('Это ошибка')
    logging.critical('Это критическое сообщение'
    Поможет лучше понимать, что происходит в коде и быстрее находить баги.
    Логирование выручало не раз! Но если что, всегда можно откатиться на print(), ахаха.

Страница 1 из 2 12 ПоследняяПоследняя