Telegram Group & Telegram Channel
🖥 Задача (с подвохом). Что выведет этот код?


def extend_list(val, lst=[]):
lst.append(val)
return lst

# Первый вызов: используем список по умолчанию
list1 = extend_list(10)
# Второй вызов: передаём новый пустой список
list2 = extend_list(123, [])
# Третий вызов: снова используем список по умолчанию
list3 = extend_list('a')

print('list1 =', list1)
print('list2 =', list2)
print('list3 =', list3)

🧩 Решение

Механика дефолтного списка
В сигнатуре функции lst=[] создаётся один список при определении функции и затем переиспользуется во всех вызовах, где lst не передан.

Первый вызов

```python
list1 = extend_list(10)
lst не передан → берётся дефолтный список.

Добавляем 10.
⇒ list1 становится [10].
```p
Второй вызов

```python
list2 = extend_list(123, [])```

Передаём новый пустой список [].

В него добавляется 123.
⇒ list2 становится [123].

Третий вызов

```python
list3 = extend_list('a')```

Опять не передан
lst → используется тот же дефолтный список, куда уже был добавлен 10.

Добавляем 'a'.
⇒ дефолтный список становится [10, 'a'], и list3 тоже ссылается на [10, 'a'].

Итоговый вывод программы:

```python
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']```

Обратите внимание, что
list1 и list3 — это один и тот же дефолтный список, поэтому изменения сохраняются между вызовами.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/pythonl/4789
Create:
Last Update:

🖥 Задача (с подвохом). Что выведет этот код?


def extend_list(val, lst=[]):
lst.append(val)
return lst

# Первый вызов: используем список по умолчанию
list1 = extend_list(10)
# Второй вызов: передаём новый пустой список
list2 = extend_list(123, [])
# Третий вызов: снова используем список по умолчанию
list3 = extend_list('a')

print('list1 =', list1)
print('list2 =', list2)
print('list3 =', list3)

🧩 Решение

Механика дефолтного списка
В сигнатуре функции lst=[] создаётся один список при определении функции и затем переиспользуется во всех вызовах, где lst не передан.

Первый вызов

```python
list1 = extend_list(10)
lst не передан → берётся дефолтный список.

Добавляем 10.
⇒ list1 становится [10].
```p
Второй вызов

```python
list2 = extend_list(123, [])```

Передаём новый пустой список [].

В него добавляется 123.
⇒ list2 становится [123].

Третий вызов

```python
list3 = extend_list('a')```

Опять не передан
lst → используется тот же дефолтный список, куда уже был добавлен 10.

Добавляем 'a'.
⇒ дефолтный список становится [10, 'a'], и list3 тоже ссылается на [10, 'a'].

Итоговый вывод программы:

```python
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']```

Обратите внимание, что
list1 и list3 — это один и тот же дефолтный список, поэтому изменения сохраняются между вызовами.

@pythonl

BY Python/ django




Share with your friend now:
tg-me.com/pythonl/4789

View MORE
Open in Telegram


Python django Telegram | DID YOU KNOW?

Date: |

Telegram announces Anonymous Admins

The cloud-based messaging platform is also adding Anonymous Group Admins feature. As per Telegram, this feature is being introduced for safer protests. As per the Telegram blog post, users can “Toggle Remain Anonymous in Admin rights to enable Batman mode. The anonymized admin will be hidden in the list of group members, and their messages in the chat will be signed with the group name, similar to channel posts.”

Telegram hopes to raise $1bn with a convertible bond private placement

The super secure UAE-based Telegram messenger service, developed by Russian-born software icon Pavel Durov, is looking to raise $1bn through a bond placement to a limited number of investors from Russia, Europe, Asia and the Middle East, the Kommersant daily reported citing unnamed sources on February 18, 2021.The issue reportedly comprises exchange bonds that could be converted into equity in the messaging service that is currently 100% owned by Durov and his brother Nikolai.Kommersant reports that the price of the conversion would be at a 10% discount to a potential IPO should it happen within five years.The minimum bond placement is said to be set at $50mn, but could be lowered to $10mn. Five-year bonds could carry an annual coupon of 7-8%.

Python django from id


Telegram Python/ django
FROM USA