-2
votes

Ne pas spécifier un nom réel pour l'argument de position dans la définition de la fonction

Une fonction à un seul paramètre peut être écrit comme ceci:

import datetime

def func1(mydate):
    frmt = '%d-%m-%Y'
    return datetime.datetime.strptime(mydate, frmt)

def func2(str):
    frmt = '%d-%m-%Y'
    return datetime.datetime.strptime(str, frmt)


# test

todaysdate = "28-10-2019"
print(func1(todaysdate) == func2(todaysdate))


1 commentaires

Def Func2 (STR): Ceci est valide mais non recommandé. Vous n'en passez pas de type . Vous dites la variable que vous passez a le nom str vous écrasez donc l'objet réservé str . Essayez de faire str (2) dans Func2 et vous verrez ceci.


3 Réponses :


3
votes

Python ne vous empêche pas de "ombrage" Types d'objets intégrés pour les noms de variables. Ce n'est pas recommandé bien sûr. Cependant, vous créez simplement une variable avec le nom str .


0 commentaires

0
votes

Je vais mettre cela dans une réponse au lieu de laisser mon commentaire mais juste pour ajouter de l'autre réponse. Vous n'allez pas passer un type à votre fonction, vous écrasez un type intégré. Bien que Python le permet, vous ne devriez pas le faire. Cela mènera à la confusion et à des erreurs sur la route.

def func(my_str):
    print(my_str) # prints test
    print(str(2)) # prints 2

func('test')


0 commentaires

0
votes
import datetime

def func1(mydate):
    frmt = '%d-%m-%Y'
    return str(datetime.datetime.strptime(mydate, frmt))

def func2(str):
    frmt = '%d-%m-%Y'
    return str(datetime.datetime.strptime(str, frmt))


# test

todaysdate = "28-10-2019"
print(func1(todaysdate) == func2(todaysdate))
this program gives you overview of the error by overriding str() function.just see monkey patching concept in python.
https://www.geeksforgeeks.org/monkey-patching-in-python-dynamic-behavior/

0 commentaires