Это оптимизация производительности. В результате этой функциональности, какой из этих двух вызовов функций вы считаете более быстрым?
def print_tuple(some_tuple=(1,2,3)):
print some_tuple
print_tuple() #1
print_tuple((1,2,3)) #2
Я дам вам подсказку. Вот разборка (см. http://docs.python.org/library/dis.html ):
#
1 0 LOAD_GLOBAL 0 (print_tuple)
3 CALL_FUNCTION 0
6 POP_TOP
7 LOAD_CONST 0 (None)
10 RETURN_VALUE
#
2 0 LOAD_GLOBAL 0 (print_tuple)
3 LOAD_CONST 4 ((1, 2, 3))
6 CALL_FUNCTION 1
9 POP_TOP
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
Я сомневаюсь, что опытное поведение имеет практическое применение (кто действительно использовал статические переменные в C без размножающихся ошибок?)
] Как вы можете видеть, - преимущество производительности при использовании неизменяемых аргументов по умолчанию. Это может иметь значение, если это часто называемая функция или аргумент по умолчанию занимает много времени, чтобы построить. Кроме того, имейте в виду, что Python не C. В C у вас есть константы, которые в значительной степени свободны. В Python у вас нет этого преимущества.
Я обычно имею текущий режим vim на статусной линии, между прочим. Если вы ищете простоту, вы можете установить только эту информацию на статусную линию .
Однако, как правило, действительно сумасшедшие вещи случаются, когда у вас есть блокировка крышки нажата и находится в командном режиме (поскольку hjkl теперь HJKL - достаточно J и K достаточно, чтобы заставить вас вытащить волосы, когда вы не понимаете, что происходит. Сделайте :h J
и :h K
, чтобы понять, что я имею в виду). Просто остерегайтесь клавиши блокировки колпачка , и вы будете в порядке в большинстве случаев IMO.
Популярная опция, указывающая на переход в режим Вставки (и обратно в обычный режим), переключает параметр cursorline
, который отвечает за выделение текущей строки экрана.
:autocmd InsertEnter,InsertLeave * set cul!
или
:autocmd InsertEnter * set cul
:autocmd InsertLeave * set nocul
cursorline
не зависит от какой-либо конкретной платформы; он доступен на любом экземпляре Vim, скомпилированном с функцией +syntax
(что обычно бывает).
– ib.
15 January 2014 в 07:52
Чтобы изменить форму курсора в разных режимах, вы можете добавить следующее в свой vimrc.
Для Gnome-Terminal (версия 2.26) Edit
if has("autocmd")
au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block"
au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
endif
Если вы используете более одного профиля в gnome-терминале, вам, возможно, придется адаптировать его к вашим профилям.
Для Konsole в KDE4Edit
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
let &t_EI = "\<Esc>]50;CursorShape=0\x7"
Это работает с несколькими вкладками и окнами .
http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes
Если вы используете tmux и iTerm2 в OSX, следующее изменяет курсор от блока на курсор и выделяет текущую строку
if exists('$TMUX')
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1\x7\<Esc>\\"
let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0\x7\<Esc>\\"
else
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
let &t_EI = "\<Esc>]50;CursorShape=0\x7"
endif
:autocmd InsertEnter * set cul
:autocmd InsertLeave * set nocul
Следующие работы для xterm / urxvt / ... (Linux), iTerm2 (Mac), Git Bash с ConEmu (Windows) и т. д. (см. комментарии):
let &t_SI = "\e[6 q"
let &t_EI = "\e[2 q"
" optional reset cursor on start:
augroup myCmds
au!
autocmd VimEnter * silent !echo -ne "\e[2 q"
augroup END
Когда вы используете tmux важно использовать его таким образом (без выхода \<Esc>Ptmux;
) - tmux будет отслеживать правильную форму курсора при переключении окон / панелей. Вам может потребоваться установить TERM=xterm-256color
перед запуском tmux, если он не работает для вас.
Другие параметры (замените номер после \ e [):
Ps = 0 -> blinking block.
Ps = 1 -> blinking block (default).
Ps = 2 -> steady block.
Ps = 3 -> blinking underline.
Ps = 4 -> steady underline.
Ps = 5 -> blinking bar (xterm).
Ps = 6 -> steady bar (xterm).
Я считаю полезным только мигать курсором в режиме Вставки и статично в других режимах.
set guicursor+=n-v-c:blinkon0
Вы можете попробовать terminus vim plugin :
В режиме вставки форма курсора изменяется на тонкую вертикальную полосу. В режиме замены он изменяется на подчеркивание. При возврате в нормальный режим он возвращается к стандартной «блочной» форме.
blockquote>