Я должен возвратить TRUE / ЛОЖНЫЕ значения от функции C?

Вам не нужно импортировать тензорный поток из керас. Вам даже не нужно импортировать тензорный поток. Keras по умолчанию использует тензор потока в качестве бэкэнда.

Вы можете сделать, например:

import keras as k

Хотя это не рекомендуется, так как вы будете импортировать всю библиотеку. Таким образом, вы обычно импортируете только те пакеты, которые вам нужны. Например:

from keras.models import Sequential

Если вы хотите получить доступ к тензорному потоку из керас, вы можете сделать:

12
задан Leonard 17 February 2009 в 22:42
поделиться

10 ответов

Я сказал бы, что оба корректны в различных целях:

Если Вы выполняете простую go/no-go проверку, например, is_numeric (), то истина и ложь работает приятно.

Для чего-то более тщательно продуманного 0 == парадигма успеха полезна в этом, это позволяет больше чем одному состоянию ошибки быть возвращенным.

В этом случае вызывающая сторона может просто протестировать против 0 или исследовать не0 возвратов на более - определенное объяснение отказа. например, прослушивание файла может перестать работать из-за несуществования, недостаточных полномочий, и т.д.

19
ответ дан 2 December 2019 в 03:16
поделиться

Конвенция не точно, что Вы, кажется, думаете. Процессы должны выйти с 0 состояниями для указания на успех, и функции, которые возвращают коды ошибок, будут часто использовать 0 для указания "ни на какую ошибку". Но поскольку булевская переменная, 0 должна означать, что ложь и ненулевой должна означать верный. Использовать 0 для верной булевской переменной получит Вас на The Daily WTF когда-нибудь.

11
ответ дан 2 December 2019 в 03:16
поделиться

Это было некоторое время, так как я запрограммировал C, но я думаю, что Вы говорите приблизительно два различных видов о функциях здесь:

  • is_foo функции, который проверяет на некоторое нечто свойства и возвраты 0 (false) или не -0 (true) указать на булево значение того свойства. Не вызывая те функции никакое состояние ошибки не ожидается (и если это происходит, это отображается на одном из тех значений).
  • foo функция, которая выполняет нечто действия. Это возвращается 0 на успехе и не -0 значение на ошибке.
6
ответ дан 2 December 2019 в 03:16
поделиться

Особенно при именовании функции is_foo (), стандартные функции символа C (isdigit (), isupper (), и т.д.) являются хорошим прецедентом для того, чтобы сделать ее путь.

3
ответ дан 2 December 2019 в 03:16
поделиться

Это не так конвенция C, как UN*X окружает тот. Полагайте, что Стандарт C iasalpha (), isdigit () и т.д. функционирует. Они все возвращаются ненулевой для указания на успех. Нижняя строка: в 'верном' C является ненулевым.

2
ответ дан 2 December 2019 в 03:16
поделиться

Я не уверен, что соглашаюсь, что существует конвенция "возврата нуля от функции для указания на успех".

AFAIK, конвенция состоит в том, что нуль является ложью, и все ненули верны в случае предикатов.

Однако эта конвенция должна только относиться к очевидным предикатам, которые возвращают булевские переменные (например, истинные/ложные). Если основная цель функции не состоит в том, чтобы возвратить булево значение (например, printf, fopen, и т.д.), то возвращаемое значение используется для указания на причины отказа, и затем можно принять конвенцию UNIX "тишины или 0, если нет проблема".

Что касается возвращаемых значений, нет ничего неправильно с использованием фиксированных возвращаемых значений, оно делает все более удобным.

Большой риск, по моему скромному мнению, состоит в том, что многие люди объявляют свои собственные константы, и когда другие используют те же файлы, Вы начинаете сталкиваться с конфликтами с их собственными константами. Так Ваш TRUE/ЛОЖЬ и конфликт с чьим-либо TRUE/ЛОЖЬЮ по линии.

3
ответ дан 2 December 2019 в 03:16
поделиться

C не имеет никакого понятия булевской переменной кроме 0 являющийся ложью и чем-либо еще являющимся верным.

Идея возвратить 0 прибывает из наличия кода возврата, указывающего, каков отказ. Если Вы не делаете кода возврата, то нет ничего неправильно с обработкой 1 и 0 как истина и ложь. В конце концов, ИСТИНА И ЛОЖЬ просто определения типов для 1 и 0 в C.

Это должно быть хорошо зарегистрировано, хотя, и Ваши функциональные комментарии должен сказать, что explicity "Возвращает TRUE ИЛИ FALSE".

Вы могли также записать, если (is_invalid_foobar ()), который мог бы сделать оператор легким понять и все еще семантически исправить.

3
ответ дан 2 December 2019 в 03:16
поделиться

Это только плохо, если это записывает Вас. Если бы Вы никогда не прослеживаете ошибок до этого, я сказал бы, что Вы в порядке. То, что более важно, является комментарием выше функции, которая запускается с, "Возвраты обнуляют для..."

"Ненулевой ошибка" конвенция, используется при попытке сказать почему наряду с флагом ошибки.

0
ответ дан 2 December 2019 в 03:16
поделиться

мне, на самом деле проверяя по 0 кажется более естественным, и компилятор оптимизирует его так или иначе, таким образом, мне нравится писать, например,

если (check_foo == 0)//делают что-то

0
ответ дан 2 December 2019 в 03:16
поделиться

Возвращаемое значение функцией - соглашения для Истина и Ложь ИЛИ Успех и Ошибка:

  1. API и т. Д. Показывает успех с возвращаемым значением 0 и сбой с возвращаемым значением = ненулевое значение ошибки .
  2. Если что-то верно; функции возвращают 1. Например, isStackEmpty () вернет 1, если стек пуст.
0
ответ дан 2 December 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: