Найти - Пользователи
Полная версия: Инструкция global
Начало » Python для новичков » Инструкция global
1
dimy44
x = 1
def f():
    if x: ...
глобальная переменная x в функции f только читается, и ее не надо объявлять global. А вот если объявить, не ускорит ли это доступ к этой переменной, ведь мы явно указываем где конкретно искать?
FishHook
ИМХО, инструкция глобал нужна, если переменная объявляемая в теле функции должна являться глобальной для модуля.
То есть так
def foo():
    global x
    x=3
foo()
print x
Однако, это тоже какое-то сомнительное применение.
dimy44
ну, имеется в виду, что допустим это флажок, который в определенный момент прервет цикл. Она только читается, и нет нужды ее объявлять глобал. А вот если объявить, то по идее питон сразу начнет ее искать в глобальном неймспэйсе? Или я заблуждаюсь?
FishHook
Простой тест
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


БЕЗ global функция работает гораздо быстрее, посему не пихайте ее в код без нужды, а такую нужду придумать весьма непросто.
dimy44
Ясно, спасибо, вопрос закрыт.
Isem
FishHook
БЕЗ global функция работает гораздо быстрее, посему не пихайте ее в код без нужды, а такую нужду придумать весьма непросто.
Тут таки важно какой питон. Важно, в каком контексте это надо. Поэтому, я бы так категорично не утверждал.
sp3
Опять экономия на спичках.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB