M = (m1 m2 m3 m4)^T --> M' = (m3 m4 m2 m1)^T
globals()
(например _
из стандартной gettext
) до замены следующего кода на другой (например автоматический импорт модулей в библиотеке ipython-autoimport). Поэтому без выполнения кода не получится определить будет ли исключение NameError или нет.c1, c2
, легко вычислить площадь эллипса π Abs(VectorProduct(c1,c2))
.-i
у интерпретатора python.Ctrl-Z
.duck.about()
в обоих случаях предполагает наличие в пространстве имён объектов с именами bill
и tail
, у которых соответственно имеются нужные аттрибуты description
и length
. Так обычно не пишут, поэтому второй случай ближе к реальному коду, но в нём необходимо тогда заменить print(bill.description,tail.lenght)
на print(self.bill.description, self.tail.lenght)
.list[1], list[3]
при условии, что значение из list[1]
встречается больше 1 раза во всём списке.from collections import Counter, defaultdict
from operator import itemgetter
l = [...] # Ваш список
items = (1, 3)
names = defaultdict(Counter)
for name, subname in map(itemgetter(*items), l):
names[name][subname] += 1
common_names = {name: set(subnames) for name, subnames in names.items() if sum(subnames.values()) > 1}
result = [[name, subname] for name, subnames in common_names.items() for subname in subnames]
from collections import defaultdict
import itertools
def combine_recipes(*recipes):
combined_recipe = defaultdict(float)
for ingridient, amount in itertools.chain.from_iterable(map(dict.items, recipes)):
combined_recipe[ingridient] += amount
return combined_recipe
from collections import defaultdict
def combine_recipes(*recipes):
combined_recipe = defaultdict(float)
for recipe in recipes:
for ingridient, amount in recipe.items():
combined_recipe[ingridient] += amount
return combined_recipe
file
необходимо не весь json-объект после post запроса передавать, а только поле response
.vk_session.method('messages.setChatPhoto', {'file': photo_upload_result['response']})
import functools
from collections import defaultdict
from pprint import pprint
class A:
def method_a(self):
pass
def method_b(self):
pass
@classmethod
def classmethod_a(cls):
pass
@staticmethod
def staticmethod_a():
pass
def add_class_to_counter(counter, cls, *, methods=None):
def count(name):
def decorator(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
counter[name] += 1
# classmethod и staticmethod - дескрипторы и не имеют __call__
# Явно вызываем
if isinstance(f, classmethod) or isinstance(f, staticmethod):
return f.__get__(None, cls)
return f(*args, **kwargs)
return wrapper
return decorator
if methods:
count_methods = methods
else:
count_methods = (name for name in cls.__dict__ if not name.startswith('_') and callable(getattr(cls, name)))
for method in count_methods:
attribute = vars(cls)[method]
setattr(cls, method, count(getattr(cls, method).__qualname__)(attribute))
calls_counter = defaultdict(int)
add_class_to_counter(calls_counter, A)
a = A()
for _ in range(10):
a.method_a()
a.method_a()
a.method_b()
a.classmethod_a()
A.classmethod_a()
A.staticmethod_a()
pprint(calls_counter)
api
, а потом обращайтесь через точкуapi = vk.get_api()
...
name = api.users.get(user_ids = event.user_id)
vk.method
как в функции write_msg
:name = vk.method('users.get', {'user_ids': event.user_id})
ffmpeg -y -i input.mkv -map 0:a -g 30 -c:a copy -c:v hevc_amf output.mkv
-map 0:a
вместе с -c:a copy
позволяет скопировать все звуковые дорожки, как они были в input.mkv.