Форум сайта python.su
0
# Программа в бесконечном цикле проверяет буфер обмена каждую минуту и записывает данные в файл !!!
import pyperclip
import time
def check_buffer():
while True:
global data
data = pyperclip.paste()
time.sleep(60)
def write_in_file():
with open('log.txt','w') as logg:
logg = logg.write(data)
write_in_file()
Отредактировано @_s_o_r_s (Апрель 13, 2021 18:30:47)
Офлайн
124
@_s_o_r_sв функции в которой цикл,после того как в data придут данные выполнить функцию записи в лог,которая принимает data
Подскажите пожалуйста как обойтись без глобальных переменных!
Офлайн
857
@_s_o_r_sОбщий принцип такой
Подскажите пожалуйста как обойтись без глобальных переменных!
>>> def f1(): ... data = 1 ... return data ... >>> def f2(data): ... print(data) ... >>> data = f1() >>> f2(data) 1 >>>
Офлайн
253
Чисто формально без них нельзя обойтись. Всегда есть “buildins”. Любая непустая программа создает глобальные объекты.
Пример выше несколько неудачен. Он создает В пространстве имен текущего модуля 3 переменные f1,f2,data. Поэтому в таком случае надо создавать один объект data и не плодить бесполезные функции.
Задача заключается в том чтобы уменьшить число одновременно рассматриваемых объектов. Уменьшение достигается созданием части объектов внутри пространств имен, что исключает их рассмотрение в других местах (полностью или для этого требуется специальный синтаксис или интроспекция).
def f1(v1): v2=1 # v2,v3 спрятаны внутри функции - самое надежное. Достать их снаружи проблематично, но тоже можно. v3=2 return v1+v2+v3 class Tx: __v1=3 # завернули переменную внутри класса, но при желании ее можно добыть def __init__(self): self.__v2=4 # засунули переменную в объект # это тоже заворачивание переменной, но теперь в модуль. Доступ снаружи # from mymodule import v1 v1=55
Офлайн
857
doza_andТы не въехал просто, что это за пример. Прочитай его исходное сообщение и проанализируй, нахера ему вообще понадобилась глобальная переменная там. Очень просто - он не знает, как передавать переменные из функции в функцию. И я ему просто продемонстрировал это. Это пишут обычно в книжках всё, которых он не читал, естественно. То есть он базовых вещей вообще не знает, а ты ему какие-то классы даёшь, пространства имён и прочее.
Пример выше несколько неудачен. Он создает В пространстве имен текущего модуля 3 переменные f1,f2,data. Поэтому в таком случае надо создавать один объект data и не плодить бесполезные функции.
Ему не классы нужно изучить и не пространства имён, ему нужно изучить для начала, что такое аргументы функции и возвращаемые значения из функций, потому что он вот на таком уровне находится.
Отредактировано py.user.next (Апрель 15, 2021 12:51:18)
Офлайн
253
py.user.nextПосмотрел. Похоже на то :)
Очень просто - он не знает, как передавать переменные из функции в функцию.
Офлайн