python что делает return
Подскажите, что конкретно возвращает return и как к нему обратиться?
import ctypes
EnumWindows = ctypes.windll.user32.EnumWindows
EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int))
GetWindowText = ctypes.windll.user32.GetWindowTextW
GetWindowTextLength = ctypes.windll.user32.GetWindowTextLengthW
IsWindowVisible = ctypes.windll.user32.IsWindowVisible
titles = []
def foreach_window(hwnd, lParam):
if IsWindowVisible(hwnd):
length = GetWindowTextLength(hwnd)
buff = ctypes.create_unicode_buffer(length + 1)
GetWindowText(hwnd, buff, length + 1)
titles.append(buff.value)
return True
EnumWindows(EnumWindowsProc(foreach_window), 0)
def main():
for t in titles:
if t != '':
print(t)
return titles
if __name__ == '__main__':
main()
Я понимаю, что принтит запущенные != пустые окна. Но, если убираю return в def main(): результат не меняется.
Ответы (2 шт):
Вот пришёл ты в магазин, положил на прилавок деньги (аргументы функции), кассир (функция) их взял, что-то проделал и положил (return) на прилавок товар. Ты можешь его взять или не взять. Если ты товар не берёшь, то естественно нет разницы, положил его кассир или не положил.
return возвращает значение из функции.
К примеру, в Вашем варианте в функции
def main():
for t in titles:
if t != '':
print(t)
return titles`
Есть указание выводить данные print(t), если они не равны ''.
В данном случае, у Вас уже при выполнении самой функции выводятся данные. А Соответственно return не имеет никакой смысловой нагрузки в функции.
Если же Вы хотите собрать данные в функции, а уже потом их выводить, то Вы можете использовать return.
Предположим, что Вы хотите не вывести сразу значения, а собрать их отдельно.
titles = [1, "", 4, 5]
titles1 = []
def main():
for t in titles:
if t != '':
titles1.append(t) ##Если значение не пустое, добавляем в новый массив, вместо вывода на экран
return titles1
print(main()) ## При вызове функции вернётся значение указанное в return функции