関数を複数回呼び出す小さなPythonスクリプトをコーディングしました。バッファは常に一意であるため(のため.pop(0)
)、関数は常に他の値を返す必要があります。しかし、リターンは常に同じです。result1 = x(buffer1)
ループのように、そしてループの外で関数を2回呼び出すとresult2 = x(buffer2)
、結果は一意になります。しかし、擬似コードのように関数を呼び出そうとすると、結果は常に同じになります。Pythonが関数を1回だけ実行し、その結果を出力しているように見えます。私はこのコードをPHP
とVB.net
に実装しましたが、正常に機能します。それは特定のPythonのもののようです。誰か説明してもらえますか?:/
擬似コード
function x()
list = []
buffer = []
for l in list:
buffer.append(l)
if len(buffer) == y:
return = x(buffer)
buffer.pop(0)
Python-コード
ema_length = {66:0,74:0,89:0}
def ema(length):
relevant = len(length)
multiplier = 2 / (relevant + 1)
sum_vector = 0
for vector in length:
sum_vector += vector
current_vector = vector
sma = sum_vector / relevant
if ema_length [relevant] == 0:
ema_length [relevant] = sma
else:
ema_length [relevant] = (current_vector - ema_length [relevant]) * multiplier + ema_length [relevant]
return ema_length [relevant]
buffer = []
for d in data:
buffer.append(d)
if len(buffer) == 89:
ema66 = ema(buffer [89 - 66:89]) # should be unique
ema74 = ema(buffer [89 - 74:89]) # should be unique
ema89 = ema(buffer [89 - 89:89]) # should be unique
ema_overall = ema66 - ema74 - ema89
buffer.pop(0)