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.