Самый длинный код в питоне

Русские Блоги

Насколько большим может быть проект Python? Сколько строк кода может быть максимум?

Нажмите, чтобы подписаться, отправьте «данные» «Python» личным письмом, чтобы получить учебные материалы по Python

Руководство:Я всегда вижу, как люди говорят, что динамика освежает, и восстанавливаю крематорий. Тем не менее, есть несколько известных проектов с открытым исходным кодом в этом мире, и некоторыеИзвестные сайты, такие как Github и Instagram с огромным трафиком, разрабатываются на основе динамических языков.После стольких лет рефакторинга я не слышал, кто из авторов вошел в крематорий. Я не знаю, действительно ли эти люди не знают или притворяются невидимыми?

Тем не менее, они сказали, что динамические языки слишком велики, чтобы их поддерживать. Хотя эти слова одинаково полезны, они напоминают мне,Мне также интересно узнать о масштабах проектов, разработанных на динамических языках.

Python ? ?

Из информации, которую я знаю, самый большой проект, разработанный на динамическом языке, может быть OpenStack (https://www.openstack.org/),Говорят, что общий объем кода достиг миллионов строк и продолжает расти.Это, конечно, хороший пример динамического владения языком. Однако анализ такого огромного проекта нелегок (ну, настоящая причина в том, что мне лень скачивать такую ​​огромную базу кода).

Читайте также:  Python to cython converter

Я выбрал для анализа некоторые из наиболее известных проектов в сообществе Python, в основном из Github, а некоторые из других репозиториев. Этот выбор может включать в себя определенные субъективные факторы, но я считаю, что большинство проектов все еще очень представительные.

Инструмент для расчета объема кода закрыт (https://github.com/AlDanial/cloc). Все проекты выбрали магистральный код по состоянию на 3 января 2018 года. В статистику включены только файлы Python, а другие типы файлов исключены. Стоит отметить, что установленная по умолчанию в Ubuntu APT закрытая версия 1.60 имеет проблему со статистической частью проекта. Эта проблема была решена в последней версии, поэтому все статистические данные в этой статье используют cloc v1.72, загруженный с официального сайта. ,

Python ? ?

Приведенная выше таблица отсортирована по количеству строк кода. Интересная вещь,Четыре верхних кода с наибольшим размером кода, кроме CPython, являются проектами O & MЯ изначально догадывался, что в коде должно быть больше элементов, таких как рейтинг Odoo, но очень низкий. У меня ограниченное понимание проектов по эксплуатации и обслуживанию, и я не уверен, почему размер кода этих проектов является одним из лучших, возможно, потому, что есть все более и более сложный контент, который нужно поддерживать?

Python ? ?

В этой статистике Sentry, который имеет наибольший объем чистого кода Python, достиг почти 70 Вт, что является довольно масштабным проектом. Есть три проекта со строками кода 30W ~ 50W, включая базовый проект CPython. Есть три строки кода 20 Вт и 10 Вт, а остальные 7 находятся в пределах строк 10 Вт.

Прочитав этот список, вы должны поверить,Динамические языки, по крайней мере, не являются проблемой для проектов с десятками строк кода.Это также верхний предел для большинства распространенных приложений,Если код действительно достигает миллионов строк, то независимо от того, какой язык используется, он неизбежно столкнется с проблемой разделения проекта.

Таблица выше классифицирует показатели количества кода по коду / пробелу / комментарию, а также в определенной степени отражает стиль кода проекта. Sentry — это проект с наибольшим количеством кода в этой статистике, однако, как видно из таблицы, комментарии в проекте немного непропорционально меньше, чем в других проектах, что указывает на то, что автор Sentry не уделяет большого внимания комментариям.

Студенты, должно быть, обнаружили, что я добавил несколько других элементов в список в дополнение к индикаторам, связанным с строкой кода, и это также является областью моего личного интереса.

Python ? ?

Нажмите, чтобы подписаться, отправьте «данные» «Python» личным письмом, чтобы получить учебные материалы по Python

Первый показатель — это среднее количество строк кода на файл. С модульной точки зрения, очевидно, что неразумно собирать слишком много контента в одном файле, что обычно означает слишком большое сцепление, которое трудно понять и изменить. Тем не менее, нет четкого стандарта на то, сколько уместно. Я надеюсь понять выбор, сделанный авторами открытого кода на практике посредством анализа этих проектов.

Статистическое распределение результатов относительно равномерное, существует от 100 до 600 строк / файл, и очевидной точки концентрации не существует. Интересно, что первые два (Pandas, NumPy) тесно связаны, и оба связаны с математической статистикой. Это может быть связано с тем, что характеристики математической библиотеки относительно чистые и единичные, и их не так просто разделить, как другие библиотеки. Проект в конце (Pillow, youtube-dl, Odoo, Scrapy) может подтвердить эту гипотезу со стороны:Все они ориентированы на конкретные области, поэтому их проще модульно оформить.

Python ? ?

Вторым показателем является соотношение комментариев к коду, эта проблема имеет похожую ситуацию. Комментарии не настолько подробны, насколько это возможно, но всегда требуют определенного количества комментариев, чтобы объяснить почему.Слишком мало комментариев, указывающих на то, что автор проекта не оставил достаточно подсказок для последующего обслуживающего персонала, что может вызвать проблемы с обслуживанием.С другой стороны, все наши исследования являются проектами с открытым исходным кодом, без ограничений оценки компании или KPI, поэтому мы можем с уверенностью полагать, что у автора не возникнет проблем с намеренным написанием большего количества комментариев.

Вышеупомянутый Sentry не подлежит сомнению, потому что комментариев слишком мало до конца. Это не обязательно означает, что проект очень плохой, но по крайней мере это сигнал о том, что проект может быть проблематичным с точки зрения обслуживания. И для проектов, где авторы готовы посвятить свою энергию написанию аннотаций (Ansible, NumPy, Fabric, Salt и т. Д.),Достаточно отразить, что автор вложил значительные усилия в проект, что является хорошим сигналом того, что эти проекты заслуживают доверия.

Одна вещь, которую я не ожидал, это то, что CPython, являющийся матерью всех проектов, занимает сравнительно низкое место. По правде говоря, у этого базового проекта должно быть больше комментариев. Но подумайте об этом и сочтите это понятным, потому что у CPython есть отдельная и очень подробная документация, которая недоступна в большинстве других проектов, поэтому оправданно иметь меньше комментариев в коде.

Python ? ?

Последняя статистика о типах файлов. Подавляющее большинство проектов Python должно быть кодом Python, в этом нет никаких сомнений, но в то же время я также хочу посмотреть, какие основные файлы включены в проект в дополнение к коду Python. Не удивительно, что C / HTML / Javascipt находится в списке,Но есть файл, о котором я не думал заранее, то есть .PO(Файлы языковых ресурсов, обычно используемые в проектах с открытым исходным кодом).

Для двух проектов Django и Django-CMS количество PO-кодов даже больше, чем Python-кода. После быстрого взгляда, Django поддерживает более 90 языков, и неудивительно, что количество языковых файлов так велико.

Этот результат также может напомнить нам, что некоторые одноклассники — не только программисты, но и большинство неопытных боссов, клиентов, менеджеров по продуктам и т. Д. — подсознательно подумают, что разработка программ — не что иное, как написание кода, для другой работы вне кода. Во время оценки часто требуется только выстрел в голову, чтобы установить очень короткое время. Но для реальных проектов,Код — это только его часть, и иногда «другая работа», как следует часто повторять, отнимает у вас большую часть времени и энергии.Эти работы часто не интересны, но они являются неотъемлемой частью проекта, и я надеюсь, что студенты будут уделять им достаточно внимания.

Источник

Русские Блоги

[LeetCode] 14. Самая длинная реализация распространенного префикса на Python

Название Описание

Идеи решения проблем

код Python

class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if strs==[] or strs[0]== "": return "" length = len(strs) if length == 1: return strs[0] res = "" a = [] for i in strs: a.append(len(i)) b = min(a) c = 0 while c  b: flag = self.aa(strs[0][c], strs[1:],c) if flag == 1: res = strs[0][:c+1] c += 1 else: return res return res def aa(self,bb,ss,c): flag = 0 for i in range(len(ss)): flag = bb == ss[0][c] if flag == 1: bb = ss[0][c] ss = ss[1:] else: return "" return flag s = Solution() res = s.longestCommonPrefix(["flower","flow","flight"]) print('. ',res) 

Интеллектуальная рекомендация

Первоначальный контакт Wireshark -интерфейса, понимайте пакет и фильтрацию фильтрации

1. ВВЕДЕНИЕ WIRESHARK: Wireshark — это очень популярное программное обеспечение для анализа сетевых пакетов с очень мощными функциями. Вы можете захватить различные сетевые пакеты и как можно больше п.

BZOJ 3307

Дерево n точек, M, операция M, каждый раз, когда вы выбираете две точки x, y, и ставите элемент типа z -типа на путь от x до y. Спросите, какие предметы, которые хранятся больше всего в конце. \[n,m \.

Локальное изображение Docker выпускается в Alibaba Cloud

Локальное зеркало выпущено в Alibaba Cloud 1. Локальный выпуск зеркала в облачный процесс Alibaba Экология Docker Alibaba Cloud ECS показана на рисунке ниже: Метод зеркалирования Построен через Docker.

Измените исходный код FlowLayout, чтобы он поддерживал установку максимального количества строк.

Упомянутый здесь компонент FlowLayout исходит из структуры макета потока, предоставленной Hongyang. Просмотр исходного кода кадраВот Введение в блог автора платформыВот Немного ерунды. Перейдите непос.

обычно используется модуль python time datetime

обычно используется модуль python time datetime Directive Meaning Notes.

Источник

Самая длинная последовательность символов Python в строке

Я изучаю питон, и у меня проблема с лабораторией. Чтобы вычислить самую длинную последовательность символа s в строке, можно использовать только базовые инструменты, такие как циклы for.

Код, который я придумал, работает, но мне кажется, что я использую неподходящую логику, добавляя переменную sequence_extended с дополнительным пробелом. Однако без этого расширения последовательность, например, sssdssss расчет работает только для первой последовательности.

Есть ли способ избежать этого расширения? Я пытался найти идею, но решение обычно заключается в использовании функций, которые нам еще не разрешено использовать, таких как списки и т. Д.

sequence = input('enter a line: ') sequence_extended = sequence + ' ' counter = 0 final_counter = 0 for symbol in sequence_extended: if symbol == 's': counter += 1 else: if counter > final_counter: final_counter = counter counter = 0 print("The longest sequence of 's':", final_counter) 

2 ответа

sequence = "sssdssss" max_len = 0 for i in range(len(sequence)): if sequence[i] == "s": j = i length = 0 while j < len(sequence) and sequence[j] == "s": length += 1 j += 1 if length >max_len: max_len = length print("The longest sequence of 's':", max_len) 

Собственно говоря, я придумал еще менее сложный вариант:

sequence = input('enter a sequence: ') first_counter = 0 second_counter = 0 for symbol in sequence: if symbol == 's': first_counter += 1 if symbol != 's': first_counter = 0 if second_counter < first_counter: second_counter = first_counter print("the longest sequence of 's':", second_counter) 

Вроде оптимальное решение данного вопроса. На всякий случай, если кому-то еще предстоит решить такую ​​лабораторию.

Источник

Оцените статью