简体中文
Telegram

讨论串 /code

14 条消息 · –
V
/code def f0(): try: return 1 finally: return 2 def f1(): x = 1 try: return x finally: x = 99 def f2(): x = [1, 2] try: return x finally: x.append(3) print(f0()) print(f1()) print(f2())
  1. P
    Status: Succeeded Exit code: 0 Execution time: 1.8s Code def f0(): try: return 1 finally: return 2 def f1(): x = 1 try: return x finally: x = 99 def f2(): x = [1, 2] try: return x finally: x.append(3) print(f0()) print(f1()) print(f2()) Result 2 1 [1, 2, 3]
      1. V
        Что-то ты не совсем точно сказал. Мутабельность конечно тут влияет, но это только кусок ответа
        1. Д
          ну мне кажется я понял в чем нюанс, не буду лишать радости ребят с чата
          1. R
            Закинуть под спойлер и вперед
    1. A
      Я так понимаю: f0() - finally выполняется в любом случае не зависимо от ошибок в try. f1() - выводится 1, так как на момент вызова x = 1, а уже после x = 99. f2() - выводим список через переменную x, и затем к этому же списку добавляем значение, тоесть метод append не возвращает новый список, а изменяет имеющийся
      1. R
        f1 потому что инты не мутабельны, а имена переменных это можно сказать алиасы на указатели. Вернули указатель на 1, а потом создали новый на 99 f2 тоже возвращает поинтер на лист, но потому что он мутабельный - у него изменился стейт после аппенда, и получилось 1, 2, 3
          1. R
            Да уже как 2 недели прошло, некропостингом то чо заниматься)
  2. M
    f1 возвращается ссылка на 1, потом в x падает ссылка на 99. Разные ссылки в общем. f2 до или после возврата (не уверен), меняется лист по ссылке. К f0 вопросики. Мейби там подменяется возвращаемая ссылка при работе finally
ССообщество Python ПрограммистовСообщество Python Программистов@python_scripts · 群组 · 科技
4 169成员4430 天内发言的人
社群信息流 在 Telegram 中打开

来自搜索索引的公开信息流 ChatCrawler ——“公开 Telegram 的 Google”;随着该社群被抓取而更新。 时间为 UTC。

仅限公开内容,使用 Telegram 官方 API。 关于 · 常见问题 · 索引限制 · 移除页面 · 目录 · 搜索 · 计算方法