Python-Standardargumentverhalten

Die Standardargumente von Python werden beim Programmstart ausgewertet, nicht bei der Methodenausführung </ b> Ich dachte, dass das Verhalten in Ruby und Scala, das ich bisher verwendet habe, normal war, also war ich ziemlich süchtig danach, ohne zu wissen, was los war

Ruby

def test(t=Time.now)
  puts(t)
end

test
sleep(10)
test

Ausführungsergebnis

2020-09-02 09:05:42 +0900
2020-09-02 09:05:52 +0900

Scala

object Test {
  def test(t: DateTime = DateTime.now()): Unit = {
    println(t)
  }
  
  def run(): Unit = {
    test()
    Thread.sleep(10000)
    test()
  }
}
2020-09-02T09:14:08.681+09:00
2020-09-02T09:14:18.732+09:00

Python

import datetime
import time

def test(t=datetime.datetime.now()):
    print(t)

test()
time.sleep(10)
test()
2020-09-02 09:20:40.970098
2020-09-02 09:20:40.970098

Was ist mit anderen Sprachen?

Recommended Posts

Python-Standardargumentverhalten
Python-Standardargumentfalle
[Python] Verhalten von Argmax
Zusammenfassung der Python-Funktionsargumente
Mixer, Python, Kugelverhalten
[Python] Kapitel 03-02 Schildkrötengrafiken (Verhalten der Schildkröte)
Befehlszeilenargumentverarbeitung (Python docopt)
[Python] Rückruffunktion (Funktion als Argument übergeben)
Überprüfen Sie das Verhalten beim Zuweisen von Python
Definition des Funktionsargumenttyps in Python
Python
Verhalten beim Auflisten in Python heapq
Ändern Sie die Standardcodierung von Python in utf-8
Verhalten von Python3 durch Sakuras Server
[Raspberry Pi] Python wurde standardmäßig in Python3 geändert
[Python] Einfache Überprüfung des Argumenttyps mit Datenklasse
Überprüfen Sie das Verhalten des Zerstörers in Python
Python> Link> Verhalten / Code von Strftime () und strptime ()
Python-String wird standardmäßig zu f-String (vielleicht)
⚠️ Achten Sie auf die Standardargumentwerte von Python ⚠️
So setzen Sie die Standardcodierung in Python auf utf-8
[Python, Multiprocessing] Verhalten für Ausnahmen bei Verwendung von Multiprocessing
Machen Sie den Standardwert des Arguments unveränderlich