Найти - Пользователи
Полная версия: Объявить переменную - или вызывать значение из функции?
Начало » Python для новичков » Объявить переменную - или вызывать значение из функции?
1
setevoy
Приветвую.

Впорос такого характера. Что лучше - объявить переменную (которая станет глобальной, т.е. - вроде как нежелательной), или использовать просто return значения из функции?

def proc_get_pid(pidfile):
    try:
        proc_pid = open(pidfile, 'r').read().rstrip('\n')
        return proc_pid
    except IOError as e:
        print('ERROR: %s' % e)
        sys.exit(1)
def cpu_get_usage(pid):
    cpu_info = psutil.Process(pid)
    cpu_perc = cpu_info.get_cpu_percent()
    return cpu_perc
print('PID = %s; ' % proc_get_pid(pidfile))
print('CPU %% = %s;' % cpu_get_usage(int(proc_get_pid(pidfile))))

В последней строке получается целых 4 скобки, что вроде как не украшает код…

Правильнее (“красивее”, “читабельнее”) ли сделать так:

pid = int(proc_get_pid(pidfile))
print('PID = %s; ' % proc_get_pid(pidfile))
print('CPU %% = %s;' % cpu_get_usage(pid))

dimy44
Ну вот смотрите, конкретно по вашему примеру, мое мнение:
два раза вызывается функция proc_get_pid (она также глобальна), сам по себе вызов функции- это затратная операция, и при этом два раза открывается и читается один и тот-же файл. Т.е. вот именно в этом примере считаю это неоправданно, а всего кода я не видел (если это отрывок). И кстати форматирование строк устаревшее, лучше применять метод строк format(…)
setevoy
dimy44
Ну вот смотрите, конкретно по вашему примеру, мое мнение:два раза вызывается функция proc_get_pid (она также глобальна), сам по себе вызов функции- это затратная операция, и при этом два раза открывается и читается один и тот-же файл.

Т.е. - лучше один раз создать глобальную переменную типа pid = int(proc_get_pid(pidfile) - и дальше пользоваться ей? Меняться в процессе работы она не будет, да.

И кстати форматирование строк устаревшее, лучше применять метод строк format(…)

Это вы про print('text %s' % var) ?

UPD Да, про print(). Как-то даже не обращал внимания на него, привык через % писать, хотя .format() часто встречал. Надо будет почитать ещё и начинать пользоваться.
py.user.next
setevoy
pid = int(proc_get_pid(pidfile))
Почему не приводишь к int сразу в функции?
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