Python: Kan een functie een array en een variabele retourneren?

Is er een eenvoudige manier om een ​​functie te krijgen om een ​​NP.Array en een variabele terug te sturen?

bijvoorbeeld:

my_array = np.zeros(3)
my_variable = 0.
def my_function():
    my_array = np.array([1.,2.,3.])
    my_variable = 99.
    return my_array,my_variable
my_function()

zodat de waarden die in de functie worden berekend, later in de code kunnen worden gebruikt? Het bovenstaande negeert de waarden die in de functie zijn berekend.

Ik probeerde een tuple {my_array, my_variable} te retourneren, maar kreeg het onbelangrijkste bericht voor NP.Array

DN


Antwoord 1, Autoriteit 100%

Het negeert de geretourneerde waarden niet, u geeft ze niet toe aan variabelen.

my_array, my_variable = my_function()

Antwoord 2, Autoriteit 145%

Uw functie is correct. Wanneer u schrijft return my_array,my_variableretourneren, retourneert uw functie daadwerkelijk een tuple (my_array, my_variable).

U kunt eerst de retourwaarde van my_function()toewijzen aan een variabele, die deze tuple zou zijn, ik beschrijf:

result = my_function()

Vervolgens, aangezien u weet hoeveel items in de taple van tevoren zijn, kunt u Pak de tuple in twee verschillende waarden:

result_array, result_variable = result

of u kunt het in één regel doen:

result_array, result_variable = my_function()

Andere opmerkingen met betrekking tot het retourneren van tupels en het uitpakken van tupels:

Soms houd ik de twee stappen gescheiden, als mijn functie Nonekan retourneren in een niet-uitzonderlijke fout of leeg geval:

result = my_function()
if result == None:
    print 'No results'
    return
a,b = result
# ...

In plaats van uit te pakken, kunt u ook toegang krijgen tot bepaalde items uit de tuple, met behulp van hun index:

result = my_function()
result_array = result[0]
result_variable = result[1]

Als je om wat voor reden dan ook een tuple van 1 item hebt:

return (my_variable,)

Je kunt het uitpakken met dezelfde (enigszins onhandige) één-komma-syntaxis:

my_variable, = my_function()

Antwoord 3, autoriteit 9%

eenvoudig antwoord

my_array, my_variable = my_function()

Antwoord 4

Gebruik na de definitie van my_function my_function = np.vectorize(my_function).
Bijvoorbeeld

def jinc(x):
    if x == 0.0:
        return 1
    return 2*j1(x)/x
jinc = np.vectorize(jinc)

Other episodes