Форум сайта python.su
Функция не обязательно должна возвращать аргумент.
Аргумент вы передаете, для того чтобы с ним провести манипуляции в теле функции, а return уже возвращает результат или что вы там хотите
def f1(b): c = 4 a = b + 3 + c return a e = f1(3)
Отредактировано Romissevd (Сен. 8, 2016 21:04:41)
Офлайн
Djo0513Для этого вам необходимо познакомиться с областями видимости
Но почему я не могу использовать эти (бывшие аргументы и уже переменные) в дальнейшей части программы? Или я неправильно понял?
Офлайн
Romissevd
Я не на столько тупой, я знаю, что программа не читает содержимое print(), а просто выводит его на экран.
e = f(3) # вывело значение c = e +1 # а что такое e?
Офлайн
Djo0513Они создаются каждый раз заново, когда функция вызывается, и разрушаются каждый раз, когда функция завершается. Они нужны только для внутренней работы функции. При вызове функции к ним прицепляются эти числа, которые подаются, а при завершении функции значение, полученное внутри, передаётся наружу через return. Вызов функции заменяется на значение, которое она вернула.
Но почему я не могу использовать эти (бывшие аргументы и уже переменные) в дальнейшей части программы?
Офлайн
Ох блат. Я так запутался, аж голова начала болеть. Попрошу напоследок, только синоним слова “возвращает”, желательно его не большое описание. Если можно, 2 синонима. Огромное спасибо всем кто вбивал в меня это (плюсики я уже раставил)))).
Офлайн
Djo0513Извинтиляюсь, если чем обидел.
RomissevdЯ не на столько тупой, я знаю, что программа не читает содержимое print(), а просто выводит его на экран.
Djo0513а чему по вашему равно e?
А почему он не знает, что это e? Она же прямо указана “e=”?
Офлайн
ну чтоб вас не смущал этот print сделаем свою функцию сортировки списка
def sortirovka ( s): # функция принимает один аргумент if type(s) != list: # проверяем список ли этот аргумент print( 'это не список') # если нет ПЕЧАТАЕМ сообщение return # завершаем функцию вернет None # продолжаем если аргумент список for _ in range (len(s)): for i in range(len(s)-1): if s[i] > s[i+1]: s[i],s[i+1] = s[i+1],s[i] return s # завершаем работу возвращаем результат a = [1,5,8,22,54,78] b = [ 'ноль','пять','три','восемь'] # будет сортироваться по первым буквам в алфав. порядке c= [22,45,67,123,46] d = 'строка для ошибки' # иызываем функцию с разными аргументами печатаем результат работы print(sortirovka ( a)) print(sortirovka ( b)) print(sortirovka ( d)) print(sortirovka ( c)) # теперь вызываем функцию с аргументом список в аргумент цикла for i in sortirovka ( b): print (i)
Отредактировано marvellik (Сен. 8, 2016 21:28:15)
Офлайн
Romissevd
Да, там не было return, это я и спрашивал выше (return переводит локальный атрибут в программную переменую(если так можно сказать)? И каждый раз уничтожает и создаёт её в программе, каждый раз биря его из функции? Так ведь?
биря=брать в прошлом времени.
башка не варит реально устал
Офлайн
Djo0513
Попрошу напоследок, только синоним слова “возвращает”
def f(x): return x + x y = f(5)
Офлайн
Завтра отвечу вам всем. А щас спать.
Офлайн