Это копия, сохраненная 31 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Свой код кидайте через https://ideone.com/
Книги и ссылка на PyCharm: https://yadi.sk/d/tArKKuQu3Kejuq
Предыдущий тред >>1130518 (OP)
Python питон
assert vs self.assertEqual
def test_yoba vs class YobaTestCase(unittest.TestCase): def test_yoba(self)...
@fixture
def heavy_resource():
..d = database.open()
..yield d
..d.close()
vs
def setUp(self):
..self.d = database.open()
def tearDown(self):
..self.d.close()
При чём в последнем случае тебе придётся делать наследование везде где нужна эта database, а для подтягивания фикстуры нужен только параметр в функцию добавить.
Далее всякие pytest.parametrize, которые ты будешь колхозить циклами в unittest.
Ещё pytest может запускать твои искаробочные™ unittest-тесты, тебе их даже не нужно переписывать.
Ой, в общем это примерно как спорить с 80-символов-в-строке-ретроградами. На широкоформатных мониторах в 2k18.
Тогда страдай.
https://www.reddit.com/r/Python/comments/7vllc2/university_switching_from_teaching_c_to_python/
Объясните простонародным языком про pandas
import pandas
p1=pandas.DataFrame(data=[[1,2,3],[4,5,6],[7,8,9]])
print (p1):
(id) 0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
p1.loc[1,[1]] выдаёт
<class 'pandas.core.series.Series'>
который распечатывается так:
1 5
Name: 1, dtype: int64
Почему
a=p1.loc[1,[1]]
print (a[1])
выдаёт5, а a[0] - KeyError ?
Series, включая отдельные строки и столбцы, нельзя перебирать как обычные последовательсности, а можно только по известным индексам столбцов/колонок или надо делать переиндексрирование с 0 перед перебором по порядку ?
Почему iloc[1,1] даёт число, а iloc[1,[1]] - Series ?
Объясните простонародным языком про pandas
import pandas
p1=pandas.DataFrame(data=[[1,2,3],[4,5,6],[7,8,9]])
print (p1):
(id) 0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
p1.loc[1,[1]] выдаёт
<class 'pandas.core.series.Series'>
который распечатывается так:
1 5
Name: 1, dtype: int64
Почему
a=p1.loc[1,[1]]
print (a[1])
выдаёт5, а a[0] - KeyError ?
Series, включая отдельные строки и столбцы, нельзя перебирать как обычные последовательсности, а можно только по известным индексам столбцов/колонок или надо делать переиндексрирование с 0 перед перебором по порядку ?
Почему iloc[1,1] даёт число, а iloc[1,[1]] - Series ?
1) explained variance score - тут даже не знаю как это на русский перевести. Помогите, пожалуйста.
2) mean squared log error - я думал, что это "средняя квадратичная логарифмическая ошибка", но загуглил такое сочетание слов и оказалось, что его не существует. Ещё помогите пожалуйста с mean squared log error, как правильно понимать error как ошибку или как погрешность?
лох объелся блох
Начнём с того, что в питоне нет мутабельных строк. Зачем они тебе вообще понадобились?
Главное — в оригинале, переводы == пиздец.
Нашёл вот такой пример на stackoverflow. Почему функция create_menu_item вынесена за пределы класса? Более того, почему, если я её переношу внутрь класса, всё ломается? В частности, pycharm в функции CreatePopupMenu подчёркивает create_menu_item красным и пишет что-то про неразрешенную ссылку (unresolved reference)? Программа запускается, но при попытке вызвать всплывающее меню падает со странным exit code.
SQL
https://ideone.com/6i1YJb
У меня есть csv такого формата, из которого нужно подставить значения в формулу hypot(x1-x0, y1-y0, z1-z0) и записать отдельный результат. Как это лучше всего сделать?
>Почему функция create_menu_item вынесена за пределы класса?
Автор посчитал её достаточно общей и непривязанной к конкретному классу, вот и вынес.
> почему, если я её переношу внутрь класса, всё ломается?
Очевидно, потому что функция теперь стала методом класса, но ты не изменил, ни сигнатуру функции, добавив первым аргументом self, ни строки с вызовом (на self.create_menu_item)
>>35116
>Как это лучше всего сделать?
Прочитать файл и в цикле подставить значения в формулу. В чём у тебя конкретная проблема?
Есть класс. В нем есть длинная лапшичная функция. Внутри функции используется переменная self.Х, переменная класса т.е.. Все это чужой код из библиотеки, к которой я пишу экстеншен.
Мне надо изменить значение этой переменной X, но только для этой одной функции. Т.е. я не могу просто перезаписать ее для всего класса. Как это сделать? Наследовать весь класс, потом копипастить длиннющую функцию и там уже самому менять self.X на local_X? Ну, пока так и сделал, но смотрится странно - копировать функцию на три экрана ради такого мелкого изменения. Есть более питоничный путь?
>Есть более питоничный путь?
Изначально не делать
>функцию на три экрана
А так, разве что
>temp, self.x = self.x, local_x_value
>self.method()
>serlf.x = temp
Ещё можешь попробовать, если есть контроль над точкой вызова, но это убого как-то, ящитаю.
Вообще, если тебе нужно изменить значение атрибута лишь в каком-то одном месте, то велика вероятность, что либо ты как-то неправильно этот атрибут пытаешься использовать, либо автор либы хуёво всё сделал.
>если есть контроль над точкой вызова
Через часик пичарм запущу и попробую, спасибо. Функцию эту я не особо копал, но надеюсь она не вызывает других функций этого класса, а то измененная переменная передастся дальше.
Вот еще один подводный камень полного копипаста нашел - если автор либы изменит оригинальный код, а у меня останется старый, то у экстеншена будет непредвиденная багофича.
алсо реквестирую годные гайды по асинхронке.
Не в стиле это может работать так, скопипасть меня,
а это хуйня устроена так
Не проще, есть причины.
>Какой язык учить в довесок к питону?
Perl Regular Expressions Syntax. Базарю, навсегда благодарен будешь.
Как правильно конвертировать во float значения csv, которые все string? Применять в map?
В коде.
Пытаюсь тут поставить один проект джанги локально, при миграции выдают такую ошибку
RuntimeError: Model class applications.quests.models.Tasks doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
в гугле пишут, что надо добавить
'django.contrib.sites'
и ID_SITE = 1
но ничего не меняется. Плиз хелп
Я паникую, блядь!
Показывай что написал, похуй на диванон.
Сделай list(string_value) и ковыряй его, зачем тебе целый класс? В питонах строка итерируется по символам.
Чиво блядь?!
>так не могут сделать
>гитхаб
Напомнить что эти пидоры банят направо и налево, и вот совсем недавно забанили утекший от Яббла код загрузчика?
Мб добавить что, или убрать?
Перемога!
Однако пока флагнутый мало того что профиль, репы, форки и гисты скрываются, так еще даже звездочки которые я наставил прячутся. Будто и не регался никогда.
А на фальконе с торнадой что писал? Или так, прочитал get started и добавил в теги?
На Falcone сейчас прожект пишем(чисто API-шку для связи сайта и ядра основного), на Tornado года 1,5 назад писал небольшой чатик(вроде ещё для чего-то юзал, но не помню конкретно), для себя чисто.
Но ни разу про Falcon и Tornado не спрашивали на собесах, в основном по Flask/Django/Celery/Postgres/GIT.
Локально поставил проект, а там настройки хранятся в папке systems, приложения в папке application.
Обычные команды миграций на создают таблицы определенные в этих аппах.
Где про это прочитать можно?
А, я даун. Следующая глава как раз об этом
Задача пикрелейтед.
Я пытаюсь её решить исходя из того, что наибольший кэшбэк можно получить перебором всех сумм покупок к лимиту карты с наибольшим процентом кэшбека (то есть, выбирать те покупки, сумма чисел которых будет наиболее близка к лимиту карты: abs(лимит_карты-сумма_чисел) <-- чем меньше, чем лучше), затем делать так же с оставшимися суммами покупок (которые "не влезли" в лимит самой выгодной карты), но уже к карте с меньшим процентом кэшбэка, и так до конца.
И вот тут я застрял, так как я тупой и не могу осилить подобный алгоритм (если он вообще правильный).
Халп плз, дедлайн завтра, а я ленивое хуйло.
640x360, 1:49
В описании напиши, что умеешь, в ссылки добавь гитхаб с очередным бложиком, поизучай бд и поставь фотку на аватар профиля, на которой тебя будут гореть глаза, желательно с какого нибудь митапа-конференции, рычи, двигай тазом сыч без профиля, который говорит за него не нужен, софт скилс очень решает в устройстве на работу
480x480, 0:10
А обработка жирной логикой обладает, необходимо потом обращаться к сайту после проверки страницы? Если да, то я бы ее в отдельный сервис вынес и отправлял задачи в Celery, а если там нужно только значения вытаскивать, то можно и оставить
Он из белорахи походу
project layout
Спасибо
сортируешь карточки по возможному профиту (процентпорог), для каждой карточки получается задача о рюкзаке. Вес ограничен порогом, стоимость = процентзаполненный вес. Плюс угловые случаи.
сортируешь карточки по возможному профиту (процент x порог), для каждой карточки получается задача о рюкзаке. Вес ограничен порогом, стоимость = процент x заполненный вес. Плюс угловые случаи (товары не могут заполнить карточку).
Задача о рюкзаке, я так полагаю, учитывает лишь значения ниже порога лимита, а мне (как я думаю) нужно самое __близкое__ число к порогу лимита, которое может быть и выше самого числа порога лимита. То есть, вот у нас порог например 100, есть две суммы покупок: 98 и 101, выбираем 101, т.к. оно более близко к 100, чем 98.
Что по PyQt? Можно ли его брать для своих проектов во время надрачивания и изучения? Или взять PySide? А может нахуй его и обратно сесть в C++ писать на чистой Qt?
Кидаю змеюку в биндинги между либами на крестах с использованием Intel MKL. Развлечение такое себе, но давеча читал на хабре, как в яву пихают ассемблерные функции. Потешился знатно.
пиши сразу на си, чо ты
Смотря для чего. Если будешь делать коммерческую прожку, то лучше взять python 3.5 и wxpython 4.0.1 , на виндувсе исполняемый файл где-то 10mb выйдет, если pyinstaller 'om собирать
По сути у pyinstaller есть несколько опций, можно все в один файл собрать, туда запихаются сама машина python и другие библиотеки, можно сделать чтобы питоновские либы были отдельно, но так дохрена файлов получится, если нужно какие-то файлы отдельно держать например картинки, то можно по старой схеме подключить директорию в самом скрипте:
sys.path.insert(0, "C:\myProgDir")
Документация http://www.pyinstaller.org/documentation.html
Недавно по wxpython свежая книжка вышла, можно отседа утянуть.
http://www.allitebooks.com/wxpython-recipes/
PySide2 кстати тоже развивается семимильными шагами, 1,5 года назад директор Qt объявил что возобнавляют разработку биндинга для питона, но там лицензия немного хуевей чем у wxpython, если делать коммерческую прожку
>sys.path.insert(0, "C:\myProgDir")
То есть таким вызовом просто подключаешь директорию к исполняемому файлу ещё до компиляции в exe? Я думал без проблем можно подключать и когда запихаешь, нужно будет просто иметь при себе эти папки. А я вообще говорил про запихивание картинок в exe. Так понимаю, что с этим проблем никаких.
В документации написано, что нужно задавать новую среду. Это прям необходимо?
Нет, я имел ввиду что в эту директорию ты сможешь сложить разное дерьмо типо py скриптов, картинок и других библиотек , но можно этого не делать. Я хз что там за среду нужно задавать. Я просто делаю в консоли
pyinstaller --onefile --noconsole main.py
И все дерьмо в один файл собирается, но если нужно в exe добавить различные иконки, картинки то нужно немного подшевелить и настроить пути , нужно немного погуглить будет и посмотреть примеры
Ладно, не буду пока заморачиваться и напишу установщик, только больше практики.
Юзаю PyQt с мануалом PySide. Брат жив.
Смищно, но нет. Сделал коряво через цикл, но мне кажется это пиздец:
for i in list:
____string = string + '/' + str(i)
Второй вариант если в листе не только str.
Ну не работает эта хуйня. Как эти копипастеры не понимают?
Меня смущает запрос. С таким запросом только нахуй ходить. Используй curl или urllib чтобы нормальные запросы были.
Есть список скажем модельки
Экзамен
Вопрос
..К экзамену (форингкей)
..вариант1правильно (тру / фэлс)
..вариант2правильно
Ответ
..К вопросу
..вариант1тру
..вариант2тру
И чё мне перебирать цыклом все Экзамен.вопросы__сет, сопоставлять с соответствующимими Ответами, потом сравнивать Ответы с правильными вариантами Вопроса, потом считать скоре=0 если вариант
Но это ж как-то тупо
Выручайте плиз
Задрочил фласк, дрочу джангу, встал вопрос - насколько ГЛУБОКО надо понимать фронт? Имеет ли смысл недостажеру воннаби-июню катиться в full-stack или стоит концентрироваться на родимом петончеке?
А хули? В вики так написано.
Sql и nosql позадрачивай пока.
import sqlalchemy as sql
import sqlalchemy.orm as orm
eng = sql.create_engine('mysql+mysqldb://test:test@localhost/test')
Session = orm.sessionmaker(bind=eng, autoflush=True)
session = Session()
session.close()
Как средствами SQLAlchemy лаконично (без перечисления все колонок) передать запрос SELECT * FROM test ?
Электронные книги бывают разного формата. Выбираешь либу под нужный формат и хуячишь. Если "книги" отсканированные то OCR полно, даже апи к гугловскому есть.
https://pastebin.com/Jsrhx22g
В том то и дело, что не получается им вытащить.
Все остальное - изи. А test3 не внутри тегов болтается и хуй знает как ее получить.
Вытаскиваешь по классу pull-right, перебираешь вытащенный список либо сразу по индексу [1].
Сам я суп уже забыл, поэтому писать не буду, но общая идея вроде такова.
Первичный запрос берёт значения - хэш и дату и сравнивает с тем, что есть в Redis, если новее - второй запрос, парсинг и запись в БД + обновление записей в Redis. Новых записей может быть несколько, соответственно, запросов тоже.
нужного формата нет, чем больше тем лучше, так что если есть какая-то либа для чтения хотя бы основных типа .doc, pdf, ebup, то было бы очень здорово.
Не модуль, но посмотри в сторону Jython.
Я так и не понял как SELECT * FROM Table написать в SQLAlchemy. Help.
isidigit
Нет, это де совсем другой интерпретатор конечно боядь будет обратная совместимость нет не слышал сука мразь ты тупая?
Спрашивал ли я,зная ответ на вопрос?Купи валерьянки что ли, сходи погуляй, выспись.
Дебила кусок, об этом чуть ли не на заглавной странице питона написано. Читать внимательнее надо. Весь тред засираете уроды малолетние тюсвоими тупыми вопросами.
А если для третьего питона переделать, то так оно будет выглядеть?
proxy = urllib.request.ProxyHandler({'http': '127.0.0.1'})
opener = urllib.request.build_opener(proxy)
urllib.request.install_opener(opener)
urllib.request.urlopen(n)
Правильно понял.
urllib2 is merged into urllib in python3
https://www.python.org/dev/peps/pep-3108/#urllib-package
Он нашел твой питон, он не может найти сам файл
Проверка на петуха. Запусти cmd.exe и выполни команду echo %path% и покажи её вывод.
Ты в какой директории находишься консолью? Нужно консолью перейти в директорию со скриптом.
Может. А может и нет.
>echo %path%
C:\Prog\Python\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Prog\Skype\Phone\;C:\Desktop\;C:\prog\python\;C:\Users\Random_Name\AppData\Local\Microsoft\WindowsApps;
>>36133
Я хз, только вкатываюсь, по Луцу я могу из cmd написать python и имя файла и тогда он откроет питон и импортирует файл, а у меня выдает ошибку. Хотя если в cmd написать путь к файлу он откроет питон и откроет файл, но это очен геморно писать путь файла всегда, вся проблема похое в path, сорян ребят за тупость
проблема в том, что приходится вместо названия файла писать путь к нему
Например, дано:
[CODE]7 2 19 3 22[/CODE]
[CODE]28[/CODE]
[CODE]Наиболее близкая сумма к 28: 2 + 3 + 22 = 27[/CODE]
Хотелось бы именно код, так как сроки поджимают.
Питонач, я совсем дупля не отбиваю под вечер.
Смотри есть функция, которая получает массив с вложенными в него массивами и возвращает массив без вложенности (пик1)
# in -> [[1,2,3], [1,2,3,4], ...]
return list(chain(*results))
# out -> [1, 2, 3, 1, 2, 3, 4]
Вопрос в том, как мне сделать добавление этого результата в еще один массив ?
Если сделать как на пике 2
на выходе будет [[1,2,3,1,2,3,4]] а мне надо плоский массив
Аноны, как и чем запихнуть ассинхронно три вечных цикла, получающие значения друг из друга?
Типо бля, это вообще возможно?
Алсо я посмотрел на asyncio и чёт сомнение меня охватило. Функции прерываются, а значения из них не вытянуть. Только, блять, передавать в другой процесс чтоли, а в этом ставить await'ы сверху бесконечных циклов и надеяться, что дух рандома уровняет всё и запилит мне нормальные ассинхронные задачи?
Двойной чаек тебе. Самый красиво выглядящий варик предложил.
я знал про extend, но у меня array-like объект, я думал в нем только необходимый минимум аля append/pop
почаны, помогите плз, а то я совсем не могу в это, код попозже проанализирую
пытался через что-то через жадный алгоритм делать, но не выходит
Ну в смысле у меня Manager().list()
Нужно добавить еще одну переменную PYTHONPATH в значении - директория с твоим скриптом. Тогда, возможно, заработает как по Лутцу. Но это блядская кустарщина. Обычно каждый скрипт в отдельной папке лежит. Заебешься добавлять.
https://duckduckgo.com/?q=pythonpath+windows&ia=qa&iax=qa
Безумие какое-то. Почему, блять, нельзя задать публичную переменную и вызывать её из функции?!
Я пока ничего не делаю. У меня есть три теоретических цикла:
1. Принимает строковое значение даёт на выход 2 списка.
2. Принимает списки. Записывает некоторые обработанные данные в файлы, даёт списки на третий цикл, затем передаёт строковое значение в 1 цикл.
3. Принимает списки и остальные данные о работе процесса.
публичную переменную и юзать ее в разных процессах?
у параллелизма дохуя проблем и это одна их них, хочешь сказать что в скале так можно?
>>36241
ну гугли пайпы же
https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Pipe
Смотря как ты ее хочешь там использовать.
спасибо, анон, все заработало
це дичь какая то, обожди, я закончу свою хуйню
Попробовал скормить своему недопарсеру текстовый файл со ссылками на архивные треды, так он в папку скачивает только картиночки из первого треда в списке. Больше в папке ничего не появляется, хотя процесс так и идёт(!). Приходится останавливать вручную. Что не так?
https://ideone.com/OeOZJW
Уря!
Кажется с каждым новым открытым тредом он перезаписывает уже скачанные картинки и прочие файлы.
Анон, моя догадка верна? И как исправить?
В коде ни строчки на кириллице
Всё равно нихуя не работает.
>И как исправить?
Изменить схему именования файлов? У тебя каждый вызов take_image называет файлы от 1.png до m.png, независимо ни от чего.
>Ведь можно получить доступ к полям класса и с использованием @staticmethod.
Нельзя. Ну, разумеется, через название класса можно, но так откуда угодно можно. Суть classmethod'а в том, что внутри вызова ты знаешь, что это за класс.
Лол.
Ты бля о чём, шутник ёпт. Я не настолюко умный чтоб до такого догадаться.
Дайте мне просто библиотеку, стандартная питоновская для меня слишком сложная.
его не надо в коде помечать, ты либо его передаешь как на первом пике либо нет как на втором
еще он по дефолту True
>его не надо в коде помечать
Я думаю документация лучше тебя знает, надо или нет. Давай ты не будешь тут сбивать всех с понтолыги, да?
Если в документации написано mp.Pipe([True])
значит так и надо писать, что тут непонятного может быть
Хотя не, нихуя не работает по сути, но хоть запускается, лал.
Мне вообще похуй что делать, я пытаюсь понять как, блять это работает и как его написать ёпт.
ща я досмотрю видосик ~6мин еще и сделаю сэмпл
Бля, спсибо тебе. Буду дрочить теперь мультипроцессинг пока не пойму какого хуя он копирует программу.
https://pastebin.com/jMyCyqFD
на, ток я с названиями переменных не стал заморачиваться, сам как нить
>[CODE]Наиболее близкая сумма к 28: 2 + 3 + 22 = 27[/CODE]
Ты не дал определения близости.
22+7 = 29, ближе к 28 чем 27 арифметически.
Если ты имеешь в виду не более заданной суммы, то это рюкзак в чистом виде.
Простой вариант
Есть 3 списка, 2 с интеджерами, один со строками
Первый список и список со строками одинаковы по длине и соответствуют интеджер - текст
во третьем списке лежат интежеры в плоскости между интеджерамит из первого, т.е.
Первый - [10,20,30,40]
Второй - ['text1', text'2, text3', text4', ]
Третий - [25, 35]
Задача достать текст из второго списка соответствующий третьему в меньшую сторону. Соответственно 25 бы здесь получил text2, а 35 text3.
Пробовал через bisect, но он, что логично, возвращает индекс большего вне зависимости от left right
Хард мод.
Третий список остается как есть, а первый и второй это один и тот же генератор такого вида:
for (level,text,int,a,se) in genobject
>робовал через bisect, но он, что логично, возвращает индекс большего
как насчет единичку вычесть?
Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число n может быть больше, чем количество минут в сутках.
Мда, что-то я что вчера вечером тупил, что сегодня утром тупил, спасибо, надо будет посмотреть, правда, не появятся ли у меня где ексепшены после этого.
Платиновый вопрос. 25 лвл, работаю аналитиком, хочу вкатиться в питон. Если учить вечерами и прибегать к помощи ментора, то смогу ли я через год-полтора вкатиться? Сейчас получаю 100 и понимаю, что пиздец просяду.
Да, еще хочу трактор завести
Могу неплохо. Литературу без проблем
soooqua как эту срань тестить то?
Есть что-то прохожее на FileField из джанги?
Пилю значит в Джанго блог, пытаюсь сделать отправку оповещения о постах на мыло.
При попытке отправки сообщения через shell оболочку, выдаёт
ошибку кодировки. В КОДЕ НЕТ КИРИЛЛИЦЫ!
и куда мне это дописывать если я элементарно не знаю какая строка принимающая данные - выдаёт ошибку кодировки?
Лучше дорогу правопорядка почитай!
Приватный методы и данные класса принято именовать с лидирующим подчёркиванием `_yoba`.
Вот есть такой код
https://ideone.com/82pVxS
Никаких ошибок, ничего не происходит, редирект срабатывает, но сама send_async_email не работает.
Ставил туда принты, вообще туда не заходит.
Просто емейлы без селери работают.
try:
while True:
____try:
________/ запуск бота /
____except ApiError:
________time.sleep(60)
p.s. А вообще, лучше напиши разрабу, он отвечает в ВК.
Не правильно. Когда минут>540, то часов больше 9, ты теряешь первую цифру. Вот как надо https://ideone.com/H1NMjW
Подтверждаю, у меня тоже c PyQt5 + pyinstaller получалось 18-19мб.
Ну всё, ты лучше.
np.append() сжимает массивы и в итоге выдает одномерный массив, а стандартный питоновский append, хоть и работает, но слишком медленный.
Что? Ты вообще как себе это представляешь? Создаёшь сначала целевой массив нужной размерности, затем копируешь в него хоть из сотни других через slices.
Нормально. Главное чтобы твоя система классов была понятной.
Он всё правильно сказал. Ты в tuple можешь сложить даже небо и аллаха и от этого он перестанет хешироваться.
hash(([], [], []))
TypeError: unhashable type: 'list'
set же в любом виде, даже замороженном, просто не даст добавить такие элементы.
Зеленый пездюк в треде. Для успешного освоения питона (только про питон спрашиваю) нужны уметь в линукс? Даже в будущем потребуется обязательно?
Да. Но можно и макось, они на самом деле очень похожи. Однако имей ввиду если хочешь в вебдев то 99% твой бекенд будет крутиться на линуксах.
Создал массив с типом элементов object, через присваивание по индексам все, вроде, работает. Спасибо
Нет, питон работает на винде лучше чем php. Можно писать настольные приложения и под веб без проблем.
Ты дебил? Вопрос был:
> какой из массивов хешируется set или tuple?
Хешируется и tuple и frozenset.
Разговор с собой это серьёзный симптом. Подумой об этом.
Вопрос о хешировании стоит в контексте кто может выступать в роли индекса dictionary.
Нет, не нужно. Я бы сказал иначе, нужно понимать основы ОС в общем, линуксы здесь только как наиболее предрасполагающая к такому изучению среда. Как видишь, полтреда зелёные спрашивают что такое PATH и почему не срабатывает импорт. А ведь envvars и в винде есть.
Спасибо!
Хватит вообще бояться линукса. Типа, в любимые игры не поиграешь? Так линукс можно использовать на виртуальной машине, он там работает быстрее, чем винда на основной.
1) функция f(x) выражающая количественные характеристики первого вещества, неважно какие характеристики, главное, что количественная характеристика "у" зависит от количественной характеристики "х" по закону f(x)
2) есть второе вещество с такими же количественными характеристиками "х" и "у", но "у" от "х" зависит уже по закону g(x)
3)А потом первое и второе вещество смешали в пропорции 40% на 60% и получился для смешанного вещества третий закон зависимости "у" от "х" h(x).
Подскажите, пожалуйста, есть ли методы машинного обучения позволяющие по законам f(x), g(x), h(x) и по величине пропорций, определить как закон смешанного вещества h(x) выражается через первые два закона g(x) и f(x)?
Ну например, допустим, что окажется, что h(x) = 0.4f(x) + 0.6g(x). То есть ли методы машинного обучения позволяющие эту зависимость h(x) от f(x) и от g(x) выявить?
Бля, да ну мне поебать на игры, я об этом ни слова не написал
https://www.wappalyzer.com/technologies/django
Очевидно, что стримингом и перекодированием видео занимается не питон. В остальном же скорость любого сайта ограничивается субд, а не интерпретатором.
А зачем перекодировать видео? Пускаешь потоки как есть, кодируя на стороне клиента сразу как надо. То есть сервак реально занимается только перегоном трафика, по-любому есть какие-то специализированные сервера под это дело, какие-нибудь плагины для nginx/haproxy или что даже более вероятно какие-нибудь циски где количество работы на цпу сведено почти к нулю и всей работой занимаются сетевые интерфейсы на уровне хардвари. Питон, само собой, только выруливает где кого куда, кто заплатил, кто не заплатил и прочий менеджмент.
> То есть ли методы машинного обучения позволяющие эту зависимость h(x) от f(x) и от g(x) выявить?
Да.
>А зачем перекодировать видео?
Чтоб трафика меньше гонять, а то канал забьется и гроб гроб кладбище.
>p.s. А вообще, лучше напиши разрабу, он отвечает в ВК.
Так, не понял. Как с ним связаться-то?
Надо видео в 5 форматах, даже если перекодировать их на стороне стримера, ADSL канала на 512кбит не хватит.
Если у стримера хуёвый интернет, то 5 форматам взяться будет неоткуда. Но так-то да, мне кажется, с клиента уходит одно видео в наилучшем возможном качестве, а потом ужимается уже на сервере.
https://yadi.sk/d/H-00n-UG3RSQem/
добра тебе
Тебе же на сайте пояснили. Двоеточие после елсе забыл
else answer == 8:
^
SyntaxError: invalid syntax
Годнота
А, все, я понял, не совсем осознавал предназначение else
Может там на сервере какой-нибудь ffmpeg стоит и эта либа этим дерьмом занимается, не?
Спасибо за книжки. Сейчас как раз читаю Thinking Python в русском переводе
Там разве не тет-а-тет дрочильни? Если стример один, то да, имеет смысл перекодирование делать на сервере, но дальше всё та же задача мультикастинга. Они там скорее всего на все CDN перегоняют в единственном экземпляре, а CDN уже обслуживает подсеть просматривающих. То есть вместо n потоков можно получить что-то вроде log n.
Чтоб пизду выгодно пристроить её нужно как можно большему числу людей показать. Однажды спросил нигру: "чувиха, нахуя тебе две мышки?" А её понесло: потому что у меня 2 Ip, соответственно 2 компа, 2 монитора, камеры мышки для управлениями ими. Я могла бы использовать kvm, но одной рукой дрочить,а другой переключаться - неудобно."
ну у меня скрипт на 60+ строк, все работает нормально, думаешь нужно будет создать тест?
Твое право, я для себя пишу тесты редко, не приучен, но у меня со стилистикой кода все ок.
На 60 строк кода тест и не нужен, скорее всего, если ты умеешь дэбагер юзать и правильно оформишь отлов и вывод возможных ошибок.
Для вас, наверное, не сложно будет решить как сделать во такое:
Нужно создать функцию, которая из предложенных строк случайного размера будет находить последовательности символов, которых ещё нет в какой-то определённой БД и записывать их туда, присваивая уникальный идентификатор и список простых чисел.
Да, я знаю, что это просто, но БД должна быть просто огромная, а каждый раз пролистывать её записи - не хватит никакого времени. Соотвественно нужно как-то так сделать, чтобы это было очень быстро.
В одну строку конечно же! Не блогодори!
бинарное дерево хэшей текста?
окей, спасибо
>>38385
>>38385
Скрипты разные бывают. Если у тебя хуйня на 20к строк и пилит ее куча мартышек то без хорошего покрытия тестами не обойтись. А иначе любое изменение может обернуться непредвиденным поведением где-то дальше по линии, и будешь потом скакать и выискивать отуда уши растут. Запуск кучи тестов на каждый коммит это сразу спалит. Но на 60 строк можно конечно забить, можно и на 2к забить если ты пишешь один.
Кулстори из своего опыта. Есть популярный фреймворк, есть небольшая батарейка для него за моим авторством. Батарейка была сделана без тестов, задачу выполнила, была выложена в открытый доступ и благополучно забыта. Тем временем фреймворк успел выпустить несколько релизов, мне присылают тикеты что всё сломалось. Залезаю в код и, вот честно, хуй его знает что и где пофиксить. Пришлось разбирать по кусочкам всё и каждому простейший тест написать чтобы хотя бы выяснить что в каком месте куда передаётся (там довольно сложные структуры ходят, не просто int/str), а затем через тревис проверить на каких версиях фреймворка это падает и почему. Кода буквально 500 строк, кроме меня его почти никто не трогал. Однако за годы для тебя твой же код становится настоящим чёрным ящиком, в котором снова нужно разбираться, как с чужим проектом.
>которая из предложенных строк случайного размера будет находить последовательности символов, которых ещё нет в какой-то определённой БД
префиксное дерево
или фильтр Блума, если ложноположительные допустимы
гугли prefix tree, radix tree, patricia
Нужно вводить максимальную длину последовательности символов, иначе пиздец.
гугли python project dir layout
polynomial fitting попробуй
Как и везде line continuations + экранирование в строках/регексах.
А чем коменты помогут? Там в принципе декомпозиция по функциям нормальная была, имена функций тоже достаточно удачные, их нужно было повыносить из одного большого класса, так как self почти не использовался, и разделить на пару модулей по функциональности.
Проблема в том, что обращаясь потом во вьюхе к кешу, я получаю - None. То есть даже не создаётся в кеше запись с таким ключом. Эта хуйня происходит лишь на сервере, на локалхосте всё ок.
В чём может быть проблема? В какую сторону копать? Как вообще проверять работу с кешем?
regex везде одинаковый. Программку используй regex buddy или regex coach.
А, это я долбоёб просто, memcached не поставил на сервак.
D:\Python36\python36.zip
D:\Python36\DLLs
D:\Python36\lib
D:\Python36
D:\Python36\lib\site-packages
D:\Python36\lib\site-packages\win32
D:\Python36\lib\site-packages\win32\lib
D:\Python36\lib\site-packages\Pythonwin
В линуксе тоже https://ideone.com/B44igy
358x326, 0:16
Ну вот каких, нахуй игр? Десктопных(pygame)? Мобильных(kivy)?
У тебя будет массив массивов в массиве. Каждая из трех коорбинат будет индексом массива.
Ты що, поехал? Нахуй мне нужен многомерный массив? Я хочу координаты определить по символам. Ебать у тебя советы конечно, будто я не знаю что в массив можно массивы пихать, лал.
with open('file.txt') as f:
for i in range(10000000):
f.write(str(I))
X=hash(s[0:8000:3])
Y=hash(s[1:8000:3])
Z=hash(s[2:8000:3])
ну или
X=hash('хуй' + s)
Y=hash('пизда' + s)
Z=hash('сотона' + s)
Жаль тебя.
"
Создайте конструкцию if, которая проверяет, действительно ли количество бисквитов (которое задано в переменной twinkies) меньше 100 или больше 500. Если это условие выполняется, пусть ваша программа напечатает сообщение «Слишком мало или слишком много».
"
file.write(sto_millionov_cifr)
Это же меньше 100-200мб (или меньше гигабайта, если ты таки от 1 до 10^8 числа записываешь), тьфу для сегодняшних скоростей.
>>39068>>39092
Сначала собери целиком строку, а потом один раз её записывай.
В файл пишет ОС, а не сам питон, и скорость зависит по большей части только от твоего диска. Спокойно записал 788 мегабайтную строку (все числа от 1 до 10^8) менее, чем за секунду. Вызов же f.write сто миллионов раз уже 15 секунд, не считая всего остального лупа.
>>39102
Если ты просишь помощи уже таком шаге, то советую забросить это дело. Перед этим упражнением наверняка была куча идентичных примеров, и если ты по ним ничего не усвоил и не можешь даже ещё раз пройтись и разобраться, то плохо всё, очень.
> Необходимо как-то ей дать целочисленные координаты в кубическом пространстве.
зачем? Ты уверен, что понимаешь, что делаешь?
>Смысл в том, чтобы похожие по составу строки находились ближе.
кривая гилберта.
Читай доки по open().
Читаю "effectivedjango.com/", и там, как я понимаю, работа ведется на линуксе, в терминале.
Следовательно, джанго работает в режиме виртуальной машины, и автоматом создает шаблонные файлы, как пример:
(tutorial)$ python ./manage.py startapp contacts
Как подобное провернуть на винде, и в PyCharm? Написать пару лишних строк - не проблема, но к примеру, указывается, что после создания файлов желательно базу данных обновить.
Вопрос - как это сделать на винде?
>Вопрос - как это сделать на винде?
Также как и в линуксе.
> джанго работает в режиме виртуальной машины
Наркоман шоле?
>Наркоман шоле?
Скорее не наркоман, а неправильно поставил вопрос.
Где в PyCharm'e синхронизировать(обновлять) бд, создавать "приложения" так, чтоб в них уже были такие файлы, как:
__init__.py
models.py
tests.py
views.py
И чтоб это делал PyCharm, а не я.
Не запускать же ради этого консоль.
>Также как и в линуксе.
Линукс и винда - разные ОС, не находишь?
Спасибо
Тебе недостаточно Pycharm. Нужно поставить на винду python, pip, django, субд, вебсервер.
О, кажется сам догадался:
os.path.dirname(os.path.abspath(sys.argv[0]))
Не таит ли это подводных каменей после компила? Есть вариант более правильный?
Берешь парсер и парсишь. Делов-то.
берешь хтмл парсер и указываешь какие блоки сохранять. Сохранять лучше в БД.
Ну понятно, что просто берёшь и парсишь. Всю эту хуйню я знаю, это не проблема. Я просто озадачился правильностью сохранения таких данных, ибо я попытался хотя бы 100к страниц спарсить с сохранением в одну переменную и ахуел от -1гб озу. Потом подумал, что нужно бы в какой-то файл писать, но каждой иттерацией открывать - дозаписывать - закрывать, эт пиздец кромешный. Насчет бд ты ахуенно подсказал, спасиб. С фильтрами и тегами как быть?
Doorique, я же тебе русским языком написал. Соьираешь коллекцию ссылок на те страницы, которые надо парсить. Из этих страниц хтмл парсером выбираешь блоки с текстом и блоки с тегами. Заносишь это в БД. Как? Чуваки, которые лучше меня шарят сиквеле меня поправят, но мне видятся 2 таблицы связанные с клбчами. В первой поля id, text, tags, где теги ключи на вторую таблицу с тегами. И так страницу за страницей заносишь в БД
Он начиная со спермерки предустановлен.
открывать и парсить файл settings.ini во всех случаях, включая запуск программы через клик в контекстном меню.
Храни настройки в определенном месте. На сперме это реестр, на никсах это ${XDG_CONFIG_DIR} или ~/.config
А еще у меня иконки...
Через спллит я по пробелам то могу разбить, но знаки препинания то останутся со словами.
Есть расстояние Левенштейна, к трём измерениям не привести.
https://docs.python.org/3/library/shelve.html
Под капотом dbm, сами значения кодируются через pickle. Можешь взять из реляционной базы наколхозить подобное на binary/json fields, можешь взять монгу, там сразу жсоны пишутся.
Ты лучший, спасиб
Можно ли сделать язык синтаксисом и удобством как Python и в то же время быстрый как C? Или это невозможно?
>Можно ли сделать язык синтаксисом и удобством как Python и в то же время быстрый как C? Или это невозможно?
nim
Меня в нем смутило, что идентификаторы с разными регистрами являются одной переменной. Его стоит использовать или в нем есть существенные недостатки?
Cython компилируемый же. Но разработчики признались, что дальнейшая оптимизация заставит отказаться то совместимости с питоном.
Зачем ты мне этим скрином напомнил, собака.
Не понятно вообще. Все данные верного типа. Координаты и индексы в инт, значения во флоат.
Если ошибка синтакическая, то проверять типы бессмысленно. Код показывай. Может проблема в отступах, в кодировке, в переносе строк.
Решилось как-то само. Я даже не представляю как. Ну ладно, код меньше даже стал, просто буду обходить это стороной.
Есть парсер на aiohttp
в нем есть примерно такие строки
task = [asyncio.ensure_future(func(i)) for i in range(10)]
await asyncio.wait(task)
Нужен вывод времени выполнения функции + ее аргументы
В обычной ситуации просто делал декоратор с time, а сейчас этот же способ выдает ошибку. Нужно мой декоратор тоже async await как то обмазать?
Лямбда там вообще не за чем.
>if x < 100 or x > 500:
>if not 100 <= x <= 500:
> print("Сообщение")
Вот два варианта if-конструкции, требуемых в задании. Зачем тот анон лямбду приплёл я не знаю, пока не забивай себе голову.
Так вот, меня терзает вопрос синтаксиса.
Короче, смотри, ёбана
Сначала мы ставим классы
>class Abu():
Потом объявляем функцию
>def __init__ (self, hands):
После, мы можем присвоить пременную внутри функции, чтобы функция могла обращаться к своим же значениям, если я правильно всё понимаю
>self.ruki = hands
Так вот почему, блядь, не
>hands = self.ruki
У меня есть класс,
У класса есть свойство,
Этому свойству я хочу присвоить переменную (обычно, люди просто не ебут мозги и пишут self.hands = hands)
Но, мне эта кривая структура мешает понять логику языка
Пока я это писал, то понял, что сначала нужно объявить переменную. Тем не менее, почему нет элементарной обратной связи?
Но, остались ещё вопросы.
Почему я не могу просто обращаться к hands?
Почему я должен создать новую переменную, причём через self?
Отсюда вытекает другой вопрос, нахуя вообще нужен self?
Причём, что в действительности меня интересует, чем это удобно?
Почему нельзя было сделать просто и без задней мысли, вот так?
class Monkey():
def (hands):
hands = True
class Makaba():
def class():
state = Monkey()
def check():
if state.hands:
print("Dvach is working")
else:
print("Please, buy more passcodes")
dvach = Makaba()
dvach.check()
Для сравнения, правильный код
class Monkey():
def __init__(self):
self.hands = True
class Makaba():
def __init__(self):
self.state = Monkey()
def check(self):
if self.state.hands:# == True:
print("Dvach is working")
else:
print("Please, buy more passcodes")
dvach = Makaba()
dvach.check()
Так вот, меня терзает вопрос синтаксиса.
Короче, смотри, ёбана
Сначала мы ставим классы
>class Abu():
Потом объявляем функцию
>def __init__ (self, hands):
После, мы можем присвоить пременную внутри функции, чтобы функция могла обращаться к своим же значениям, если я правильно всё понимаю
>self.ruki = hands
Так вот почему, блядь, не
>hands = self.ruki
У меня есть класс,
У класса есть свойство,
Этому свойству я хочу присвоить переменную (обычно, люди просто не ебут мозги и пишут self.hands = hands)
Но, мне эта кривая структура мешает понять логику языка
Пока я это писал, то понял, что сначала нужно объявить переменную. Тем не менее, почему нет элементарной обратной связи?
Но, остались ещё вопросы.
Почему я не могу просто обращаться к hands?
Почему я должен создать новую переменную, причём через self?
Отсюда вытекает другой вопрос, нахуя вообще нужен self?
Причём, что в действительности меня интересует, чем это удобно?
Почему нельзя было сделать просто и без задней мысли, вот так?
class Monkey():
def (hands):
hands = True
class Makaba():
def class():
state = Monkey()
def check():
if state.hands:
print("Dvach is working")
else:
print("Please, buy more passcodes")
dvach = Makaba()
dvach.check()
Для сравнения, правильный код
class Monkey():
def __init__(self):
self.hands = True
class Makaba():
def __init__(self):
self.state = Monkey()
def check(self):
if self.state.hands:# == True:
print("Dvach is working")
else:
print("Please, buy more passcodes")
dvach = Makaba()
dvach.check()
>Почему я должен создать новую переменную, причём через self?
>Отсюда вытекает другой вопрос, нахуя вообще нужен self?
Можешь обращаться к hands и ебаться с аргументами в функциях внутри класса, если ты ебанат конечно. А можно просто в __init__ объявить переменные в self и вызывать их из любой функции в классе. Пиздуй читай A Byte of Python
Спасибо
self - себяшка, указывает на то, что это переменная объекта класса, если писать без неё, то получается, что ты создал переменную класса
>== True
И зачем это? Можно было без этого обойтись, сравнивать в if с True это дурной тон
>мне не нравится концепция классов
Тред функциональщины на два блока ниже, дружок-пирожок
Судя по твоим вопросом ты даже лутца, который объясняет все как для даунов не читал
>Пока я это писал, то понял, что сначала нужно объявить переменную.
Нет, не нужно. Переменные самообъявляются при их первом использовании.
почему, блядь, не
>hands = self.ruki
Так тоже можно для создания локальной переменной hands. Такова традиция оператора присвоения во всех языках. Слева пишется кому присваиваешь, а справа - что присваиваешь. Слово self.ruki - это всегда свойство объекта. Ты можешь создать новое свойство в любом месте в любое время: внутри метода или снаружи объекта:
abu = Abu() # создали объект abu
abu.ruki = 123 # создали ему свойство, что равносильно твоему self.ruki = 123 внутри метода.
>Можешь обращаться к hands
Ты не можешь обращаться к hands. В этом вся суть вопроса, с hands вообще ничего нельзя сделать внутри класса, у функции просто есть переменная, к которой нельзя обращаться.
Чтобы обратиться к hands, нужно создавать переменную self.hands. Которая, опять же, используется только внутри класса.
>>39818
>что это переменная объекта класса, если писать без неё, то получается, что ты создал переменную класса
Может ты имел ввиду переменную функции?
Внутри обычных функций переменные работают как обычные переменные.
А вот внутри классов только через "self".
Или я не понимаю разницы между объектом класса и классом.
>И зачем это?
>Можно было без этого обойтись
># == True:
Может я и обошёлся, ведь это просто комментарий.
>ты даже лутца
Как что-то плохое.
>>39828
>Нет, не нужно.
Я имел ввиду, что
>a = 'word'
>a = b
>print(b)
Не сработает, потому что сначала нужно объявить переменную "b =", ну и дальше ей спокойно присвоится значение 'a'. Но не наоборот, хотя, было бы удобно.
>Ты можешь создать новое свойство в любом месте в любое время: внутри метода или снаружи объекта
Это я знаю.
>abu.ruki = 123 # создали ему свойство, что равносильно твоему self.ruki = 123 внутри метода.
А вот сейчас я задумался. А ведь действительно. Вот сейчас для меня многое прояснилось.
Но два вопроса ещё осталось.
1) Что делает переменная self в каждой функции класса?
def Funct(self), зачем писать self? Почему нельзя просто оставить скобки пустыми, ведь к этому 'self' никак нельзя обратиться, оно ничего не делает.
2) Ок, у нас есть класс
>class Abu():
>def __init__(self):
Мы добавляем в функцию новую переменную:
>Abu.hands = True
Теперь внутри класса я могу обратиться к ней как к self.hands, без объявления, она уже существует как self.hands.
Так почему я не могу сразу её создать в таком виде в функции?
>class Abu():
>def __init__(self, self.hands, self.somethingelse)
Чтобы избежать вот этого вот
>def __init__(self, hands)
>self.hands = hands
>Можешь обращаться к hands
Ты не можешь обращаться к hands. В этом вся суть вопроса, с hands вообще ничего нельзя сделать внутри класса, у функции просто есть переменная, к которой нельзя обращаться.
Чтобы обратиться к hands, нужно создавать переменную self.hands. Которая, опять же, используется только внутри класса.
>>39818
>что это переменная объекта класса, если писать без неё, то получается, что ты создал переменную класса
Может ты имел ввиду переменную функции?
Внутри обычных функций переменные работают как обычные переменные.
А вот внутри классов только через "self".
Или я не понимаю разницы между объектом класса и классом.
>И зачем это?
>Можно было без этого обойтись
># == True:
Может я и обошёлся, ведь это просто комментарий.
>ты даже лутца
Как что-то плохое.
>>39828
>Нет, не нужно.
Я имел ввиду, что
>a = 'word'
>a = b
>print(b)
Не сработает, потому что сначала нужно объявить переменную "b =", ну и дальше ей спокойно присвоится значение 'a'. Но не наоборот, хотя, было бы удобно.
>Ты можешь создать новое свойство в любом месте в любое время: внутри метода или снаружи объекта
Это я знаю.
>abu.ruki = 123 # создали ему свойство, что равносильно твоему self.ruki = 123 внутри метода.
А вот сейчас я задумался. А ведь действительно. Вот сейчас для меня многое прояснилось.
Но два вопроса ещё осталось.
1) Что делает переменная self в каждой функции класса?
def Funct(self), зачем писать self? Почему нельзя просто оставить скобки пустыми, ведь к этому 'self' никак нельзя обратиться, оно ничего не делает.
2) Ок, у нас есть класс
>class Abu():
>def __init__(self):
Мы добавляем в функцию новую переменную:
>Abu.hands = True
Теперь внутри класса я могу обратиться к ней как к self.hands, без объявления, она уже существует как self.hands.
Так почему я не могу сразу её создать в таком виде в функции?
>class Abu():
>def __init__(self, self.hands, self.somethingelse)
Чтобы избежать вот этого вот
>def __init__(self, hands)
>self.hands = hands
> Что делает переменная self в каждой функции класса?
Функции класса я называю методами. Переменная self делает доступными внутри метода все свойства объекта. Через нее можно вызвать другие методы, либо значения переменных пример https://ideone.com/gh5R5S
>зачем писать self?
Можно не писать, если метод статический. См. пример выше.
>Так почему я не могу сразу её создать в таком виде в функции?
>def __init__(self, self.hands, self.somethingelse)
Ну, вот, бля, не предусмотрели такого.
>статический
Я примерно понимаю, что это означает, но всё же, не до конца. Если в данном статическом методе прописать self, это вызывает ошибку, почему?
>Переменная self делает доступными внутри метода все свойства объекта. Через нее можно вызвать другие методы, либо значения переменных
Получается, что она не только делает доступным, но и заставляет проводить определённые манипуляции. Какие? Почему статическая переменная с self выдаёт ошибку?
Кроме того, я понял одну из причин, почему переменные методов нужно вызывать через ".self", потому что внутри методов можно использовать обычные переменные. Не встречал таких примеров в "Python Crash Course", отчасти поэтому не мог понять, зачем нужно обращаться через ".self"
>>39878
Будем надеяться, что к четвёртой версии предусмотрят.
Статический в контексте ООП означает "не имеющий инстанции", т.е. нет сущности, нет объекта. Статический метод в питоне можно вызывать до создания объекта класса. В статическим метод нельзя передать self, потому объекта нет. Ведь, Self - всегда указывает на объект класса.
И ещё один вопрос, как ты обошёлся без __init__? Без __init__ ты не можешь присваивать значения самому классу, только отдельным методам внутри него. В этом есть смысл? Это - полноценный класс? Или в нём нет никакого смысла?
> внутри методов можно использовать обычные переменные
Верно. Так реализовано разделение namespacе(именное пространство). Обычная переменная действует только внутри одного метода. А переменная self.ruki действует во всех методах этого класса.
>присваивать значения самому классу
Эту фразу я читаю как "передавать значения при создании объекта класса". Действительно не могу. Это нормальная практика. На самом деле мой класс обладает этим методом __init__(), как и любой класс в питоне. Каждый класс наследует базовый питоний класс object. Мою декларацию можно написать более явно:
class Abu(object):
...
или в терминах Java:
class Abu extends object {
... }
В случая, когда программист прописывает def __init__ (self) в декларации своего класса, он фактически перекрывает своим кодом существующий метод __init__ у родителя - object.
Ебать, сколько ж людей пытается срубить бабла, по сути говоря об одном и том же. Такое ощущение, что либо им всем в одно утро приходит в голову заебенить самоучитель для чайников, либо они в принципе не гуглили, что у них уже есть сформировавшиеся конкуренты.
Уже разобрался, я декоратор тоже async обмазал, а нужно было только внутреннюю функцию
Олсо ты даже сообщения об ошибках, похоже, не читаешь, тебе же пишут:
>positional argument follows keyword argument
Т.е. ты не в том порядке передаешь аргументы - сначала должен идти обязательный аргумент, а потом опциональный. Это основа основ, что в вызове функции аргументы передаются в том же порядке, в каком они были определены в описании функции. Узнать порядок можно из прототипа функции или из документации.
Посмотри для начала хотя бы вот это:
https://www.youtube.com/watch?v=3fE_08eXyE4&list=PLlb7e2G7aSpTTNp7HBYzCBByaE1h54ruW&index=2
>Ты не можешь обращаться к hands.
Можно обращаться к hands внутри класса если каждый раз его передавать при вызове функций, я об этом
https://docs.python.org/3/howto/descriptor.html
property-функция/декоратор в итоге создают класс-дескриптор, или это разные штуки?
Чёт я проиграл с реализации namedtuple()
Генерить класс с помощью строки-темплейта с кодом класса, вообще охуеть.
Мне-то казалось всякая мета-магия пиздона позволяет сгенерить класс без такой хуйни.
Лол.
Типо вот так? Или еще проще есть способ?
Спасибо.
Спасибо, пообщался с ним, он сказал что проблема не у меня, а на сервере в вк, и что ошибку надо просто игнорировать.
Уже выше писал. Дла даунов:
Одно подчёркивание: условная договорённость именования "приватных" атрибутов и методов.
Два подчёркивания: включается механизж mangling-а чтобы наследник не испортил твой атрибут или метод.
А есть какая-нибудь конфа питоняш в дискорде/телеге?
Можешь глянуть, как он тестил свои функции в папке tests
Забугорная общепрограммерская, там сравнительно активный канал питона.
IRC какой-нибудь freenode, канал #python, там больше тысячи человек сидит, но тоже на английском.
Слак python-ru.
Пиздос. Как дальше жить зная такое? Хотя судя по git blame это очень старый код, 4-10 лет отроду.
Пропертя это встроенный дескриптор, написанный на сишке.
Постепенно вкатываюсь из сей/плюсов в питон.
Написал пару программок по типу бот для телеграмма/скачивание веселых картинок из вк-другой-хуйни-с-апи/скраппинг рандомной хуйни с разных сайтиков и пришел к следующим выводам:
-по сути, я пишу все тот же с/с++ код, только на питоне
-я заебался скраппить, блять
В связи с этим два вопроса:
1) Каким образом быстрее задрочить все эти питоновские штуки типа [[govno for mocha in zhopa] for tratat in lala if chlen in zhopa] ? И есть ли в этом смысл? будет ли это работать быстрее дефолтной хуйни в условные 4 строки?
2) Подскажите, че еще можно пиздатого написать, не залезая во всякие джанги и другие здоровые фреймворки/либы. Ну и чтобы не скраппить, блять
А почему они используют _ а не __?
В питоне можно написать свой goto https://www.quora.com/What-is-the-equivalent-of-goto-or-jump-command-in-python
Ну, типа, идут условия, идут, а потом БАЦ в середине: "Вы выиграли! Хотите сыграть еще?" И это все добро должно вернуться к старту, где машина загадывает число.
С этими функциями корешусь без проблем, поскольку такие функции есть и в других языках.
Больше интересует мишура, присущая только питону. Говоря о той хуйне, что я напиcал до этого - в питон доках написано, что list comprehension - это просто удобная хрень для создания списка.
Судя по гуглу, бОльшая часть типсов-триков питона направлена на удобство.
Значит ли это, что по той же производительности разницы особой нет?
На производительность в питоне нужно забивать и писать максимум читабельно. Почитай как устроен интерпретатор, основной тормоз это миллионы dict-accesses в объектах, всякие getattribute с дескрипторами (например когда ты делаешь банально zhopa.atatat). Всё очень медленно, но очень гибко. Вместо компилятора используй линтеры/mypy: всех ошибок не выловят, но самые очевидные покажут.
Дополнительно можешь попробовать пописать экстеншены на си/плюсах.
И да, чего ты так зациклился на скраппинге, пиши что захочешь или попробуй поконтрибьютить в попенсорц где-нибудь чтобы не зря трудился.
Виндоюзера ответ.
Хочу переносы привычные для json.
Про json.dumps я знаю, но блять, я данные пиздона хочу форматировать, а не json.
Решил саморазвиваться, пока есть время. Интересно просто, как вообще логарифм считать, не пользуясь math
>>40670
С такими вопросами в школьный курс математики. Аризона, Вест-Верджиния, Оклахома и Мэрилэнд.
Окей, спасибо, пойду mathprofi почитаю, уже не помню ничего
>>40550
>>40551
Видать, и правду говорят: утро вечера мудренее. Пораскинул мозгами и зациклил, как надо:
https://repl.it/repls/WiryImpressiveDesigner
Бля, не пойму, как его заставить выводить ошибку при написании чего-то отличного от целого числа.
Подскажи, в каком направлении думать :(
Вот так делают настоящие профи: print(sum(1 for _ in range(0, 5) if int(input()) > 20))
Для таких как ты существует Лутц, его и читай
>1 for _ in range(0, 5) if int(input()) > 20
Поясните как это работает. Почему выражение возвращает единицу только когда условие выполняется?
> range(0, 5)
> 1 for _
> профи
print(sum(int(input()) > 20 for _ in range(5)))
Но вообще профи так не делают. Так делают только ради фана.
Код для примера:
https://ideone.com/mX8ttC
#В комментариях я написал, какой именно результат мне нужен
Все асинхронные задания отправляются в ядро, затем приложение говорит: я хочу возобновить выполнение когда что-нибудь произойдёт на этом наборе заданий (вызывает select/epoll). Далее ядро занимается своими делами или другими приложениями, потом когда происходит эвент, передаёт управление твоему приложению со структурой куда записано где с каким заданием что произошло. Соответственно приложение/asyncio выполняет свои перекладывания по полкам пока снова не вызовет select/epoll и не уснёт.
Просто надо разбить выражение на четыре части.
1) range(0, 5) - генерация значений
2) for _ in <...> - получение и преобразование значений (в данном случае значение игнорируется)
3) if int(input()) > 20 - фильтрация (все значения не выполняющие проверку игнорируются, остальные идут дальше)
4) 1 - преобразование значений (в данном случае любое входное значение преобразуется в единицу)
Просто они расположенные в странном порядке.
На жаваскрипте этот же код можно переписать примерно вот так:
[0,1,2,3,4,5].map(_ => null).filter(Int(input()) > 20).map(_ => 1)
>в данном случае любое входное значение преобразуется в единицу
Но в этом удивительном примере False в единицу не преобразовывалось. Все в sum() считалось правильно.
Оно фильтруется ифом. Т.е. до единицы даже не доходит, интерпретатор питона просто пропускает это значение.
stb1 = int(input())
str1 = int(input())
stb2 = int(input())
str2 = int(input())
if (str1-str2 == 1) or (str2-str1 == 1) or (stb1-stb2 == 1) or (stb2-stb1 == 1):
print("YES")
elif (stb1-stb2 == 1 and str1-str2 == 1) or (stb2-stb1 == 1 and str2-str1 == 1):
print("YES")
else:
print("NO")
Cука. Решаю тесты на пичарм, только 2 неправильных. Вот их входные
1) 4 4 5 6
2) 4 3 2 2
Это нормально, что я на подобной хуйне по 2-3 дня сижу? Тема циклов сама понятна,а вот эти задачи не совсем получаются.
Но ведь ты ничего не изменил.
решаю тесты на питонтютор*
Помогите разобраться и оптимизировать код:
Посмотреть его можно здесь:
https://ideone.com/AKurcT
Или здесь:
https://repl.it/repls/FrugalCompetentOctagons
Вопрос написал в комментариях. Надеюсь, будет понятно, что я имею ввиду.
Странно, переделал и заработало:
https://repl.it/repls/TremendousYearlyProblem
Может я уже сам не помню, что я хотел сделать.
Хотя, нет, ничего не заработало. Да, точно, не работает, как складывается, так и вычитается только 10, не переприсваивается значение таким методом.
Вопрос остаётся открытым.
Ты а2 в любом случае не используешь нигде кроме вычисления. Поэтому и присваивать его свойству объекта (self.a2 = a2) не имеет смысла. https://repl.it/repls/ConcernedPoliteSolution
Вот все, что нашел по теме, но там как раз системное меняется - https://stackoverflow.com/questions/12081310/python-module-to-change-system-date-and-time
>По ссылке приложился только мой старый код.
Поправил содержание. Где ты там видишь повторяющийся код?
В этой библиотеке используются декораторы. В примере вот так:
import telebot
bot = telebot.TeleBot(config.token)
@bot.message_handler(content_types=["text"])
def repeat_all_messages(message):
bot.send_message(message.chat.id, message.text)
Я решил замутить свой класс. В конструктор этого класса передаю токен, в конструкторе создаётся экземпляр бота, копирую в тело классо метод из примера выше и питон начинает ругаться на декоратор @bot.message_handler(bla-bla), дословно "name 'bot' is not defined'.
Как заставить эту хуйню работать?
unittest.mock
Что значит костыльное? Заебали эти словечки везде вставлять. Оно либо сделано и работает/тестируется, либо нет. Костыли это затычки для заведомо хуёвой архитектуры, позволяющие сделать хоть как-нибудь, при этом известно что можно лучше и правильнее. А здесь как ты лучше сделаешь?
То что нужно, спасибо.
>Где ты там видишь повторяющийся код?
Вот как раз 'self.a2 = a2' было лишним кодом.
А почему вот так не работает?
https://repl.it/repls/VioletredWiseBase
Бросай попытки в погромирование, это не твоё.
Можно не засерать тред вопросами которые очевидны любому кто хотя бы 100 страниц любого учебника по Пиздону прочитал?
Может хотя бы гуглить научишься, прежде чем учиться кодить?
Уже сам вспомнил, что это - дефолтное значение.
ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ
ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ
ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ
https://2ch.hk/pr/res/1141205.html (М)
https://2ch.hk/pr/res/1141205.html (М)
https://2ch.hk/pr/res/1141205.html (М)
https://2ch.hk/pr/res/1141205.html (М)
>bot
Где-нибудь внутри экземпляра класса есть эта переменная? хуярь сюда код класса, думай о областях видимости
Это копия, сохраненная 31 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.