>>> def total(a=5, *b):
return(a, b)
>>> total_first_fixed = partial(total, 5)
>>> a, b = total_first_fixed(6)
>>> a
5
>>> b
(6,)
>>> a, b = total_first_fixed(1, 2, 3)
>>> a
5
>>> b
(1, 2, 3)
inspect
. Но, если до такого дошло в прикладном коде, значит дела идут не важно и не туда.import inspect
def get_default_args(func):
signature = inspect.signature(func)
return {
k: v.default
for k, v in signature.parameters.items()
if v.default is not inspect.Parameter.empty}
def f1(a=5, *b):
print(a)
print(b)
if __name__ == '__main__':
f1(1, 2, 3)
f1(*get_default_args(f1).values(), 1, 2, 3)
urllib3.util.connection.create_connection()
, ответственную за установку TCP соединения. Соответственно, можно попробовать подменить эту функцию на свою реализацию, и использовать пакет dnspython для запросов.from urllib3.util import connection
import dns.resolver
def your_dns_resolver(hostname: str) -> str:
"""Получает на вход доменное имя, возвращает IP адрес в виде строки."""
resolver = dns.resolver.Resolver(configure=False)
resolver.nameservers = ["8.8.8.8"] # список используемых DNS серверов.
answer = resolver.resolve(hostname, "A") # A-запись для IPv4 адреса, AAAA-запись для IPv6 адреса
if len(answer) == 0:
raise Exception("No A record found")
return str(answer[0])
_orig_create_connection = connection.create_connection
def patched_create_connection(address, *args, **kwargs):
"""Wrap urllib3's create_connection to resolve the name elsewhere"""
host, port = address # оригинальный адрес для запроса
hostname = your_dns_resolver(host) # сами определяем IP по имени
return _orig_create_connection((hostname, port), *args, **kwargs) # дёргаем оригинальную функцию, чтобы создать соединение
connection.create_connection = patched_create_connection
Ведь, максимумом является 255 IP-адресов в одной сетиКто вам такое сказал?
if player1 == 0: #ошибка синтаксиса в этой строке
IndentationError: expected an indented block after 'while' statement on line 61
def my_generator(number):
while number > 0:
yield number
number -= 1
gen = my_generator(5) # теперь в gen генератор от 1 до 5
my_list = [0, 1, 3, 5]
print(type(gen))
set_gen = set(gen) # разворачиваем генератор в множество (если, конечно, влезет)
set_my_list = set(my_list)
print(f'gen {set_gen}')
print(f'list{set_my_list}')
print(set_gen - set_my_list)
print(set_my_list - set_gen)
print(set_gen & set_my_list)
print(set_my_list & set_gen)
print(set_gen | set_my_list)
print(set_my_list | set_gen)
Если вы дадите какие-то совесть по оформлению или синтаксу кода, я буду вам нереально благодарен.
я тот же sqlite выучил за 1 день
cursor.execute(f"INSERT INTO {table}({columns}) VALUES ({values})")