0

私はまだプログラミング言語に精通しておらず、値を返す low_price と (明らかに) オブジェクトを返す high_price の違いを理解するのに苦労しています。構造が異なる理由を誰かが説明できますか? どちらも辞書です。high_price は関数を通過しています。それが理にかなっていることを願っています。インデントが正しくない場合は申し訳ありませんが、ウェブサイトでもこれを正しく行うのにまだ苦労しています!

Output
{0: {...}} 
({0: {...}}, 99.9969999999999)

def agregate_freq(freq, high_price,low_price):    
    if mynumber >high_price[0]: #new one
        high_price[0] = mynumber
    #if mynumber <low_price[0]: #new one
    #    low_price[0] = mynumber
    print(high_price[0])
    return (high_price)

    if mynumber <low_price[0]: #new one
        low_price[0] = mynumber

    high_price[0] = agregate_freq(0,high_price,low_price)
    print (high_price[0],low_price[0])
4

2 に答える 2

1

return (high_price)期待どおりのタプルhigh_priceはなく、式の値を返すだけです。(high_price[0],low_price[0])タプルです。単一要素のタプルが必要な場合は、; の後にコンマを入れますhigh_price。のようなものreturn (high_price,)

これが、表示される出力に違いがある理由です。

于 2013-04-05T17:53:24.843 に答える
1

を実行するとhigh_price[0] = agregate_freq(0,high_price,low_price)、 の 0 番目の要素が関数high_priceの戻り値に設定されますagregate_freq。その関数はそれ自体を返すので、奇妙なことに、最初の要素をそれ自体high_priceに設定していると思います。あなたはそれをしていません。 私は推測していますが、あなたの関数は割り当て自体を行っているように見えるので、おそらく何も返したくありません。それ自体で呼び出すだけで、探していることができる場合があります。high_pricehigh_pricelow_price
agregate_freq(0,high_price,low_price)

于 2013-04-05T17:53:39.493 に答える