Comportement des arguments par défaut de Python

Les arguments par défaut de Python sont évalués au démarrage du programme, pas lors de l'exécution de la méthode </ b> Je pensais que le comportement de Ruby et Scala que j'avais utilisé jusqu'à présent était normal, donc j'en étais assez accro sans savoir ce qui n'allait pas

Ruby

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

test
sleep(10)
test

Résultat d'exécution

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

Et les autres langues?

Recommended Posts

Comportement des arguments par défaut de Python
piège d'argument par défaut de python
[python] comportement d'argmax
Résumé des arguments de la fonction Python
mélangeur, python, comportement de la sphère
[Python] Chapitre 03-02 graphiques de tortues (comportement de la tortue)
Traitement des arguments de ligne de commande (docopt Python)
[python] Fonction de rappel (passez la fonction en argument)
Vérifiez le comportement lors de l'attribution de Python
Définition du type d'argument de fonction en python
Python
Comportement lors de la liste dans Python heapq
Changer le codage par défaut de python en utf-8
Comportement de python3 par le serveur de Sakura
[Raspberry Pi] Changement par défaut de Python en Python3
[Python] Vérification simple du type d'argument avec la classe de données
Vérifiez le comportement du destroyer en Python
python> lien> Comportement / code de Strftime () et strptime ()
La chaîne Python devient une chaîne f par défaut (peut-être)
⚠️ Méfiez-vous des valeurs d'argument par défaut de Python ⚠️
Pour définir le codage par défaut sur utf-8 en python
[python, multitraitement] Comportement des exceptions lors de l'utilisation du multitraitement
Rendre la valeur par défaut de l'argument immuable