OVH Cloud OVH Cloud

Re: Copier une fonction ? Résolu

1 réponse
Avatar
Méta-MCI
"Méta-MCI" <enleverlesX.XmcX@XmclaveauX.com> a écrit dans le message de
news: ...
> *** j'ai trouvé en rédigeant, mais je met quand même le message ***
> *** (les fonctions ne sont pas copiables ; c'est dans la doc) ***
>
>
> Bonjour !
>
> Je n'arrive pas à (deep)copier une fonction.
>
> Mon bout de code :
>
> import copy
>
> def fff():
> return 1
>
> a=fff
> b=copy.deepcopy(a)
>
>
> Le message d'erreur :
> Traceback (most recent call last):
> File "D:\dev\python\this1.py", line 7, in ?
> b=copy.deepcopy(a)
> File "C:\Python24\lib\copy.py", line 204, in deepcopy
> y = _reconstruct(x, rv, 1, memo)
> File "C:\Python24\lib\copy.py", line 336, in _reconstruct
> y = callable(*args)
> File "C:\Python24\lib\copy_reg.py", line 92, in __newobj__
> return cls.__new__(cls, *args)
> TypeError: function() takes at least 2 arguments (0 given)
>
>
> Est-ce qu'un callable ne serait pas copiable ?
>
>
> --
> Michel Claveau
>
>

1 réponse

Avatar
Bruno Desthuilliers
"Méta-MCI" a écrit dans le message de
news: ...

*** j'ai trouvé en rédigeant, mais je met quand même le message ***
*** (les fonctions ne sont pas copiables ; c'est dans la doc) ***


Bonjour !

Je n'arrive pas à (deep)copier une fonction.

(snip)



Est-ce qu'un callable ne serait pas copiable ?




Si, bien sûr:
Python 2.4.1 (#1, Jul 23 2005, 00:37:37)
[GCC 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)] on
linux2
Type "help", "copyright", "credits" or "license" for more information.
class MyFunc(object):
... def __call__(self):



... return "allo ?"
...
import copy
func = MyFunc()
copy.deepcopy(func)
<__main__.MyFunc object at 0x407dc1ac>