@ru_python

Страница 7447 из 9768
Captain
18.12.2018
22:23:01
почитай про изменяемые и неизменяемые типы данных в питоне

кажется, это про то

https://devpractice.ru/python-lesson-3-data-model/

Oleksandr
18.12.2018
22:24:04
https://devpractice.ru/python-lesson-3-data-model/
ну, словарь хранит в себе не объекты, а ссылки на объекты, в то время как int переменная очевидно хранит именно record. в этом дело?

Google
Oleksandr
18.12.2018
22:25:01
аааа

понял, спасибо за ссылку

то есть, я, переназначаня, по сути, не меняю переменную, я создаю новую, в то время как со словарём именно меняю

Captain
18.12.2018
22:26:00
ага

ну тут ещё считаю своим долгом сказать, что в питоне бывают эксплицитно глобальные переменные

Captain
18.12.2018
22:27:01
хотя это скорее считается плохим вариантом и вообще unpythonic

Nikolay
18.12.2018
22:27:02
не с одной функцией

Oleksandr
18.12.2018
22:27:25
не с одной функцией
ненене, уже всё понятно, спасибо)

Captain
18.12.2018
22:28:11
но в целом будет работать код вида VAR = None def decorator() global VAR def wrapper() …

и эта самая module-level переменная будет честно меняться

но это весьма некрасиво и в целом достаточно ненадёжно

Oleksandr
18.12.2018
22:29:47
ну, в рамках конкретно этой задачи (это не рабочая задача, а из области "а как это сделать?") проще таки создать кеширующий дикт внутри декоратора. то есть, с внешней переменной понятно, непонятно было именно как внутри декоратора :)

Google
Captain
18.12.2018
22:30:12
а, ну тогда да

но если переменных разведётся много, лучше классом

class MyDecorator(object): def init(self): self.var = 0 def decorate(self, var): self.var = var def real_decorator(function): ........ return real_decorator my_decorator = MyDecorator() @my_decorator.decorate(3) def smth(x) print(x)

Oleksandr
18.12.2018
22:37:49
логика понятна, а в чем преимущество по сравнению с cache=dict() в decorator? и как сюда аргументы передать? смысл же разные аргументы для разных функций.

Captain
18.12.2018
22:38:12
а, ой

во, исправил

ну короче суть та же, что и с нормальным декоратором

просто теперь это метод

и условно говоря можно создать разных инстансов для разных функций, если аргументы должны меняться независимо

Oleksandr
18.12.2018
22:40:06
чот как-то велосипедно :) но очевидно сработает, да.

Captain
18.12.2018
22:40:29
ну на практике обычно там куча всего ещё в классе есть

для примитивного декоратора так-то действительно достаточно словаря

Oleksandr
18.12.2018
22:43:35
хотя правильнее, как мне кажется, сделать это не через метод, если уж делать класс декоратором, а через def call(self, *args, **kw)

Captain
18.12.2018
22:44:08
ну, вопрос вкуса, на самом деле, бывает по-разному

Oleksandr
18.12.2018
22:44:10
а то использовать метод и синтаксически некрасиво и незачем, при наличии call

Captain
18.12.2018
22:44:22
у одного класса может быть несколько декораторов, например

как в условной библиотеке telebot, скажем

Oleksandr
18.12.2018
22:44:49
аргумент, но это уже совсем unpythonic, ну чисто интуитивно :)

хотя вопрос задачи, да.

Captain
18.12.2018
22:45:00
где у одного бота есть разные декораторы на добавление хендлеров

Google
?
18.12.2018
22:45:41
Which python library do you use? public poll pyTelegramBotApi – 5 ??????? 29% @craboo, Vladimir, @eggpriest, @cutwater, @fireofchaos python-telegram-bot – 5 ??????? 29% @c0x6A, @LEE_SUNG, @kuvam, @Sortafreel, @Ardillita_qwerty Other – 3 ???? 18% @alexmadd, @SergAHell, @amir_foreverornever Telepot – 2 ??? 12% @vovkd, @lisiniaa aioGram – 2 ??? 12% @svinerus, @Lorkes twx.botapi ▫️ 0% ? 17 people voted so far.

Gimm
18.12.2018
23:01:04
всем неспящим в сиэтле привет!)

вопрос нубский: file = open('d://python/rosstat.csv').readlines() inn = str(input('Inn:')) for i in iter(file): if inn in i: print(i) f = open('result.csv', 'w') f.write(i) f.close()

почему то в переменной i сидит совершенно левая строка, а в консоли правильная, в итоге в файле не то что надо

?
18.12.2018
23:04:16
вопрос нубский: file = open('d://python/rosstat.csv').readlines() inn = str(input('Inn:')) for i in iter(file): if inn in i: print(i) f = open('result.csv', 'w') f.write(i) f.close()
Это что питон 2 ? С версии 3 из input() всегда string, нет необходимости пускать его через str()

Если это 2, то там есть rawinput()

?
18.12.2018
23:05:19
Еще с csv лучше работать с помощью pandas

Gimm
18.12.2018
23:06:10
эх, если бы это было проще) я с пандой начал, но там споткнулся об размер файла, чанксайз применял, не помогло

?
18.12.2018
23:06:24
file в данном случае это лист, через него можно итерировать просто for i in file

Gimm
18.12.2018
23:07:31


?
18.12.2018
23:07:43
А то что пишется совсем разное, это потому что пишется уже после for петли. То есть, то что самое последнее

Gimm
18.12.2018
23:07:48
поглядите на результат, не удивляйтесь идле, это спайдер, что было в анаконде

я перед запуском все переменные чищу через среду, откуда там левая строка берется не пойму

Nikolay
18.12.2018
23:08:50
?

Gimm
18.12.2018
23:09:25
?
слишком большое разрешение?)

надо внутрь цикла запихать?
о майгадбл... так и надо было сделать :(

Google
?
18.12.2018
23:11:34
поглядите на результат, не удивляйтесь идле, это спайдер, что было в анаконде
Делай не в режиме w, а в append. Типа так: with open('result.csv', 'a') as f: for i in file: if inn in i: f.write(i) print(i)

?
18.12.2018
23:15:54
не работает так...
Что происходит?

Gimm
18.12.2018
23:16:08
ввожу инн и всё, подвисло

file = open('d://python/rosstat.csv').readlines() inn = input('Inn:') with open('result.csv', 'a') as f: for i in file: if inn in i: f.write(i) print(i)

?
18.12.2018
23:16:52
Ошибок нет?

Gimm
18.12.2018
23:17:05
неа, всё типа ок

Admin
ERROR: S client not available

Gimm
18.12.2018
23:17:19
зато старый код пашет

file = open('d://python/rosstat.csv').readlines() inn = input('Inn:') for i in file: if inn in i: print(i) f = open('result.csv', 'w') f.write(i) f.close()

?
18.12.2018
23:18:22
чем append лучше?
Так он будет дописывать в файл, а write перепишет его полностью

?
18.12.2018
23:18:53
То есть, если у тебя там несколько подходящих вариантов, у тебя только последний запишется

Richy
18.12.2018
23:19:16
Недавно через "w" делал

Чекну код через 5 мин

?
18.12.2018
23:19:32
Недавно через "w" делал
Ты писал все разом?

Он пишет в for петле

Google
?
18.12.2018
23:19:51
Строка за строкой

Richy
18.12.2018
23:19:51
А

Я делал так

s = open(...,'w')

s.write(...)

s.close()

?
18.12.2018
23:21:30
Если открывать файл с with open() то нет необходимости его закрывать

И открыть вне петли, до начала

Richy
18.12.2018
23:22:30
Ну в петле да

Оикрытт до начала и в конце операций закрытт

$pl01t
18.12.2018
23:23:12
О чём болтаем?

Gimm
18.12.2018
23:23:49
да вот мистер G дал хорошую наводку на решение, но потом запутал меня)))

Vladislav
18.12.2018
23:23:55
Делаю вот такого типа диалоги '''QInputDialog.getText(self, "text", "text")''' Дело в том что когда я создаю проект я в вожу название нажимаю энтер и оно работает А вот когда хочу переименовать, Энтер нажимаю и он почему то идет в отмену, хотя фокус стоит на кнопке Ок Подскажите пж в чем проблема?

?
18.12.2018
23:26:21
да вот мистер G дал хорошую наводку на решение, но потом запутал меня)))
Не знаю почему у тебя не вышло, но уверен в режиме write он не напишет больше одной строки в этот файл

Даже если там будет много совпадений

Страница 7447 из 9768