Форум сайта python.su
x = 1 def f(): if x: ...
Офлайн
568
ИМХО, инструкция глобал нужна, если переменная объявляемая в теле функции должна являться глобальной для модуля.
То есть так
def foo(): global x x=3 foo() print x
Офлайн
ну, имеется в виду, что допустим это флажок, который в определенный момент прервет цикл. Она только читается, и нет нужды ее объявлять глобал. А вот если объявить, то по идее питон сразу начнет ее искать в глобальном неймспэйсе? Или я заблуждаюсь?
Офлайн
568
Простой тест
import timeit x = 3 def foo(): global x y = x ** 2 def bar(): y = x ** 2 print(timeit.timeit("foo()", setup="from __main__ import foo")) print(timeit.timeit("bar()", setup="from __main__ import bar"))
0.249526023865 0.161004066467
Отредактировано FishHook (Март 1, 2013 11:46:42)
Офлайн
7
FishHookТут таки важно какой питон. Важно, в каком контексте это надо. Поэтому, я бы так категорично не утверждал.
БЕЗ global функция работает гораздо быстрее, посему не пихайте ее в код без нужды, а такую нужду придумать весьма непросто.
Офлайн
18
Опять экономия на спичках.
Офлайн