Почему функции печатаются автоматически при вводе оператора if - PullRequest
0 голосов
/ 30 июня 2018

Почему при выполнении этого кода я получаю "привет"?

Спасибо!

def b():
    print("hi")
def c():
    return True
if b() == 'hi':
    print("Done")

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Вы путаете печать с консоли с возвратом значения. Ваша функция неявно возвращает None, если вы ничего не возвращаете из нее, поэтому она никогда не будет равна 'hi'. Ваш b() печатает - и не возвращает 'hi'

def b():
    print("hi")  # maybe uncomment it if you do not want to print it here
    return "hi"  # fix like this (which makes not much sense but well :o)

def c():
    return True
if b() == 'hi':
    print("Done")

Вы можете проверить это так:

def test():
    pass

print(test())

Выходы:

None

Дополнительные показания:


Еще одна важная вещь для чтения: Как отлаживать небольшие программы (# 1) - он дает советы о том, как самостоятельно исправить код и найти ошибки путем отладки.

0 голосов
/ 30 июня 2018

По сути, вы говорите if b(), который запускает функцию b () и печатает "hi", равно "hi", печатает "done", но поскольку ваша функция печатает "hi", а не возвращая "привет", оно никогда не будет равным истине.

Попробуйте это:

def b():
    return "hi"
def c():
    return True
if b() == 'hi':
    print("Done")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...