ar
Feedback
Hello World

Hello World

الذهاب إلى القناة على Telegram

Подписывается челик на канал, а он ему как раз 🎩 По рекламе: @my_little_trump

إظهار المزيد
2 456
المشتركون
لا توجد بيانات24 ساعات
لا توجد بيانات7 أيام
لا توجد بيانات30 أيام
أرشيف المشاركات
Мы с @python_lounge создали совместный чат для питонистов и для тех, что еще только начинает. В планах участники будут помогать друг другу с различными ошибками и просто отвечать на вопросы. @pychat_ru - ждем всех.

type() vs isinstance() С помощью функции type() можно проверить, принадлежит ли аргумент тому или иному типу:
>>> a = 10
>>> b = [1, 2, 3]
>>> type(a) == int
True
>>> type(b) == list
True
>>> type(a) == float
False
В отличие от type(), функция isinstance() специально создана для проверки принадлежности данных определенному классу (типу данных):
>>> isinstance(a, int)
True
>>> isinstance(b, list)
True
>>> isinstance(b, tuple)
False
>>> c = (4, 5, 6)
>>> isinstance(c, tuple)
True
isinstance() по сравнению с type() позволяет проверить данные на принадлежность хотя бы одному типу из кортежа, переданного в качестве второго аргумента:
>>> isinstance(a, (float, int, str))
True
>>> isinstance(a, (list, tuple, dict))
False
Кроме того, isinstance() поддерживает наследование. Для isinstance() экземпляр производного класса также является экземпляром базового класса. Для type() это не так:
>>> class A (list):
...     pass
... 
>>> a = A()
>>> type(a) == list
False
>>> type(a) == A
True
>>> isinstance(a, A)
True
>>> isinstance(a, list)
True
#tips #isinstance

Метод get для словарей
name_for_userid = {
    382: "Alice",
    590: "Bob",
    951: "Dilbert",
}

def greeting(userid):
    return "Hi {}".format(name_for_userid.get(userid, “there”))
Вывод:
>>> greeting(382)
"Hi Alice!”
Вызов функции с аргументом по умолчанию (или без существующего ключа):
>>> greeting(333333)
"Hi there!”
#tips #dict

#datascience
#datascience

Сортировка словаря по значению
>>> xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1}
>>> sorted(xs.items(), key=lambda x: x[1])
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]
Или c помощью operator:
>>> import operator
>>> sorted(xs.items(), key=operator.itemgetter(1))
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]
#tips

The random module Нетрудно догадаться, что модуль random служит для генерации случайных чисел. В основу его работы положен алгоритм Мерсенна. Функция random.random() возвращает случайный float из интервала [0.0, 1.0). Результат всегда будет меньше чем 1.0.
>>> random.random()
0.4631297580529897
>>> random.random()
0.5855244248224873
Стоит рассмотреть два интересных примера использования функции random. ▪️Для того, чтобы выбрать рандомный элемент из списка или кортежа, используйте random.choice()
>>> items = ['one', 'two', 'three', 'four', 'five']
>>> random.choice(items)
’two’
▪️Для того, чтобы выбрать несколько элементов из списка или кортежа, используйте random.choices()
>>> random.choices(items, k=3)
['three', 'five', 'four’]
#random

Вложенные list comprehensions В list comprehensions можно использовать несколько for:
>>> l = [[1,2,3], [4,5,6]]
>>> [lll * 2 for ll in l for lll in ll]
[2, 4, 6, 8, 10, 12]
#tips

Return
def func():
    try:
        return 'try'
    finally:
        return 'finally’
Вывод:
>>> func()
'finally’
Объяснение: ▪️Когда в try-блоке «try … finally» выполняется оператор return, break или continue, finally также выполняется «на выходе». ▪️Возвращаемое значение функции определяется последним выполненным оператором return. Поскольку finally выполняется всегда, оператор return, выполняемый в finally, всегда будет последним. #return

Использование переменной, не определенной в области
a = 42
def func1():
    return a
 
def func2():
    a += 1
    return a
Вывод:
>>> func1()
42
>>> func2()
UnboundLocalError: local variable 'a' referenced before assignment
Объяснение: ▪️Когда ты назначаешь переменную в области видимости, она становится локальной. Таким образом, переменная a становится локальной для области func2, но поскольку она ранее не была инициализирована в той же области, возникает ошибка. ▪️Чтобы изменить внешнюю переменную области a в func2, используй ключевое слово global:
def func2()
    global a
    a += 1
    return a
Вывод:
>>> func2()
43
#global

Форматирование списка
>>> l = [[1, 2, 3], [4, 5], [6], [7, 8, 9]]
>>> sum(l, [])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
В функциональном стиле:
from functools import reduce
from operator import add
data = [[1, 2, 3], [4, 5, 6]]
reduce(add, data)
Вывод:
>>> data
[1, 2, 3, 4, 5, 6]
#tips

Правильный ответ:
a = [1, 2, 3, 4]
b = [1, 2]
Хорошо, но как вам такое?
a = [1, 2]
b = a
a += [3, 4]
Вывод:
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3, 4]
Объяснение: ▪️a += b не ведет себя так же, как a = a + b ▪️выражение a = a + [3, 4] генерирует новый объект и устанавливает ссылку a на этот новый объект, оставляя b неизменным

Что выведут переменные a и b?
a = [1, 2]
b = a
a = a + [3, 4]
print(‘a =’, a)
print(‘b =’, b)

Голосование закончено! Сегодня мы разыграем код на PyCharm Professional, любезно предоставленный одним из наших подписчиков. Победил: @a1*20 Всего участников: 46 Всем спасибо за участие! С победителем уже связались. Никнейм убрал на всякий случай.

Статья для новичков в Python https://telegra.ph/Python-dlya-nachinayushchih-02-12

Операции над множествами Set — множество, в котором отсутствуют повторяющиеся элементы:
>>> a = set([1,2,3,4])
>>> b = set([3,4,5,6])
>>> a | b # объединение
{1, 2, 3, 4, 5, 6}
>>> a & b # пересечение
{3, 4}
>>> a < b # подмножества
False
>>> a - b # разница
{1, 2}
>>> a ^ b # симметрическая разность
{1, 2, 5, 6}
#set

Одноразовая функция в классе На тот случай, если нам вдруг понадобится функция, которая будет использоваться всего один раз, после чего будет использоваться другая функция:
class foo:
    def normal_call(self):
        print("normal_call")
    def call(self):
        print("first_call")
        self.call = self.normal_call

>>> y = foo()
>>> y.call()
first_call
>>> y.call()
normal_call
>>> y.call()
normal_call
#tips

Правильным ответом будет являться список 1,2. Так происходит из-за того, что дефолтные параметры хранятся в неизменном кортеже в атрибуте функции defaults, который создается в момент определения функции. Для того, чтобы добиться правильного поведения функции, воспользуемся ключевым словом None при определении аргументов по умолчанию
def append(item, x=None):
    if x is None:
        x=[]
    x.append(item)
    return x

m_list = append(1) #returns 1
m_list = append(2) #returns 2

Что выведет следующая функция?
def append(item, x=[]):
    x.append(item)
    return x

m_list = append(1)
m_list = append(2)
print(‘m_list =’, m_list)

photo content

Красивый вывод Ты можешь красиво выводить на экран словари и списки с помощью pretty-print:
from pprint import pprint 
pprint(m_dict)
Нагляднее это, конечно, при работе со словарями. Кроме того, можно выводить информацию из JSON-файлов. #pprint