Я нашел решение. Я не знаю, столкнусь ли я позже с проблемами!
A=np.array([(150,"A"),(30,"B"),(9,"14")], dtype='object')
c=np.argmax(A, axis=0)
Да, наконец блок бежит за функциональными возвратами, но это не имеет значения. Помните, что возвращаемое значение передается значением, таким образом, новая временная переменная создается для него во время возврата, таким образом наконец, блок не делает ничего для влияния на фактическое возвращаемое значение. Если Вы хотите поддерживать желаемое поведение, Вы могли бы использовать параметр, как так:
static void Main(string[] args)
{
string answer;
Sample(out answer);
Console.WriteLine(answer);
}
public static void Sample(out string answer)
{
try
{
answer = "abc";
return;
}
catch (Exception)
{
throw;
}
finally
{
answer = "def";
}
}
Или, Вы могли просто переместить оператор возврата за пределами блока попытки, как так:
static void Main(string[] args)
{
string answer = Sample();
Console.WriteLine(answer);
}
public static string Sample()
{
string returnValue;
try
{
returnValue = "abc";
}
catch (Exception)
{
throw;
}
finally
{
returnValue = "def";
}
return returnValue;
}
Однако, учитывая, что наконец блок будет всегда переопределять возвращаемое значение, это - сомнительный дизайн.
Ваш "наконец" блокируются, присваивает значение returnValue и не на самом деле возвращает значение. "Возврат" уже произошел, перед наконец блок изменяет значение, и поэтому "abc" возвращается.
Пока код сбивает с толку как, что Вы сделали, не имеет смысла, что он делает, корректно.
finally
блок эффективно бежит return
оператор. Таким образом, Вы уже возвратили старое значение abc
перед входом в Ваш наконец блок.
(это не точно, как работы под капотом, но это достаточно близко для точки здесь),
Я не эксперт, но я должен был бы предположить, что эта функция возвращается и затем вызывает наконец. С тех пор return returnValue
был уже выполнен, действительно не имеет значения, что значение returnValue берет в наконец блок. Это поведение отчасти имеет смысл, потому что это, как предполагается, выполняет весь блок попытки перед наконец блок и единственный способ, которым это может сделать, который является, если это возвращается из функции как свое воображаемое к.
Если Вам действительно любопытно относительно того, что продолжается, то можно загрузить и установить Отражатель. Это - фантастический инструмент для помещения в 'сумку o приемов'. Это скажет Вам, что продолжается под капотом.
В предположении я сказал бы, что Вы определяете то, что будет возвращено (ссылка на строку "abc") в точке, где оператор возврата.
Так то, что наконец более поздние наборы, что ссылка для обращения к другой строке не имеет никакого эффекта на возвращенное значение.