ClassicDependency
обёрнуты зависимости от Python пакетов (matplotlib и numpy), а как ставить остальное кажется надо смотреть где-то тут:GstVideo + Python
global
.global
не имеет смысла.global
и перечислить имена из глобальной области через запятую.nonlocal
.import pyautogui
import keyboard
from threading import Thread
from time import sleep
switch = False
def Run():
global switch
i = 0
while switch:
pass
def Click():
global switch
while switch:
pyautogui.click()
sleep(1)
def Switch():
global switch
while True:
if keyboard.is_pressed('End'):
if switch:
switch = False
pyautogui.keyUp('shift')
else:
switch = True
pyautogui.keyDown('shift')
thread1 = Thread(target=Switch)
thread2 = Thread(target=Run)
thread3 = Thread(target=Click)
thread1.start()
thread2.start()
thread3.start()
thread1.join()
thread2.join()
thread3.join()
import asyncio
async def hello():
while True:
await asyncio.sleep(0.2)
print('hello')
async def world():
while True:
await asyncio.sleep(0.8)
print('world')
async def asynchronous():
tasks = [asyncio.ensure_future(hello()), asyncio.ensure_future(world())]
await asyncio.wait(tasks)
loop = asyncio.get_event_loop()
loop.run_until_complete(asynchronous())
l = [1, 2, 3, 4, 5, 6]
l = [[l[i], l[j]] for i, j in zip(range(0, len(l) - 1, 2), range(1, len(l), 2))]
print(l)
zip()
можно сократить так:l = [1, 2, 3, 4, 5, 6]
l = [[i, j] for i, j in zip(l[0::2], l[1::2])]
print(l)
pip install selenium
git config --global user.name "Твоё имя латинницей"
git config --global user.email твой_email
git clone https://ссылка_на_репозиторий.git
.gitignore
и папка .git
).git add --all
git commit -m 'update'
git push origin master
Kivy runs on Linux, Windows, OS X, Android, iOS, and Raspberry Pi. You can run the same code on all supported platforms.
class MyClass:
def __init__(self):
self.methods = []
for name in dir(self):
attr = getattr(self, name)
if callable(attr) and not name.startswith("__"):
self.methods.append(attr)
def print_hello(self):
print("Hello!")
test = MyClass()
test.methods[0]()
class MyClass:
def __init__(self):
"""Тут не должно быть много логики"""
self.my_attr = 'my attribute'
@property
def methods(self):
"""Динамическое получение списка методов
Зачем так?
1) мы убрали логику из __init__
2) узнаем о методе, даже если добавили его потом с помощью setattr
"""
result = []
for name in dir(self):
# добавлена проверка name != 'methods',
# чтобы избежать бесконечной рекурсии
if name != 'methods' and not name.startswith("__"):
attr = getattr(self, name)
if callable(attr):
result.append(attr)
return result
@property
def my_property(self):
"""это property, а не метод"""
pass
def my_method_1(self):
"""а вот это метод"""
print("my method 1")
def my_method_2(self):
"""и это не метод"""
print("my method 2")
test = MyClass()
print('Всего методов:', len(test.methods))
for method in test.methods:
method()
# Получим в выводе две строки:
# Всего методов: 2
# my function 1
# my function 2
function load_ai(id){
$.post('GetBLOB.htm', {
ID : id,
TABLE: "T_ANALYTICAL_INFORMATION"
}, function(data) {
window.location.href=data;
});
}
https://analytic.nalog.ru/portal/GetBLOB.htm
import requests
data = {
'ID': 1,
'TABLE': 'T_ANALYTICAL_INFORMATION',
}
load_url = 'https://analytic.nalog.ru/portal/GetBLOB.htm'
response = requests.post(load_url, data, verify=False)
file_name = response.text.replace('files/', '')
file_url = 'https://analytic.nalog.ru/portal/files/{}'.format(file_name)
response = requests.get(file_url, verify=False)
with open(file_name, 'wb') as file:
file.write(response.content)
import requests
for i in range(200):
try:
data = {
'ID': i,
'TABLE': 'T_ANALYTICAL_INFORMATION',
}
load_url = 'https://analytic.nalog.ru/portal/GetBLOB.htm'
response = requests.post(load_url, data, verify=False)
file_name = response.text.replace('files/', '')
file_url = 'https://analytic.nalog.ru/portal/files/{}'.format(file_name)
response = requests.get(file_url, verify=False)
with open(file_name, 'wb') as file:
file.write(response.content)
except Exception as error:
print(type(error), error)
1. Чем является условие if start: # Что этов приведенном ниже коде?
if variable:
по-умолчанию заменяет примерно такую конструкцию:if (
variable is not None # ни ничего
and variable is not False # ни ложь
and variable != 0 # ни ноль
and variable != '' # ни пустая строка
and variable != [] # ни пустой список
and variable != {} # ни пустой словарь
and variable != tuple() # ни пустой кортеж
and variable != set() # ни пустое множество
):
if variable:
эквивалентны False
. В качестве наглядного примера, if my_list:
для проверки на пустой список []
писать гораздо удобнее, чем if len(my_list) != 0:
.if start:
исключает срабатывание вложенного кода, как при пустой строке ''
, так и при None
.2. Соответственно что передается при вводе пустого Enter?
''
, что затем "присваивается" переменной start
. И так как условием выполнения цикла while
является start != ''
, то в данном коде ввод пустой строки является способом выхода из цикла.3. Чем является пустая строка, ведь она ни False, ни True, ни None
''
имеет тип str
. Однако, см. выше про falsy значения.if start:
покрывает и проверку if start != '':
, и ряд других проверок, описанных в пункте 1.