почему оператор присваивания создает значение, когда оператор print используется в функции, и не возвращает значение при использовании return? - PullRequest
0 голосов
/ 21 января 2020

почему следующий код выдает значение hello, когда операторы присваивания не должны создавать значения, и почему просто hello, а не hello world?

def f1():
  print 'hello'
def f2():
  return 'world'
f1=f1()
f2=f2()

Ответы [ 3 ]

0 голосов
/ 21 января 2020

Возврат должен быть использован. Вы выводите «Hello» на экран, но вы просто возвращаете «World». Чтобы распечатать его, вы должны использовать:

def f2():
  return 'world'
print(f2())

Или, если вы не хотите печатать и использовать возвращаемое значение для каких-то других целей, вы должны сохранить его в переменной:

def f1():
  print 'hello'
def f2():
  return 'world'
f1
f2=f2()
print(f2)  # print the value stored in f2 i.e: 'World'
0 голосов
/ 21 января 2020

Здесь есть две разные концепции: назначения и функции.

  • Что делают назначения?

Он хранит значение чего-то справа от присваивание внутри переменной слева от присваивания, которое затем может быть использовано позже.

  • Что делает функция?

Она разрешает делать что угодно и может возвращать значение (или нет) после этого.

Ваша функция f1 напечатает 'привет' и затем ничего не возвращает. Ваша функция f2 ничего не делает и возвращает "мир". Затем у вас есть переменная f1 и f2 с тем же именем, что и у функции (это сбивает с толку), которая содержит то, что возвращается f1 и f2. Если мы удалим функции, которые вы кодируете, сделайте это:

print 'hello'
f1=None # Nothing in 'Python'
f2='world'
0 голосов
/ 21 января 2020

Функции f1() и f2() вызываются в последних двух операторах, а их возвращаемые значения сохраняются в f1 и f2 соответственно. Когда вызывается f1(), он печатает 'привет' и возвращает None. Когда вызывается f2(), возвращается «мир». Попробуйте узнать, как работают функции, как их вызывать и возвращать значения. Попробуйте напечатать значения f1 и f2, чтобы увидеть себя.

...