What is Python's coerce() used for?

后端 未结 2 1631
南方客
南方客 2021-01-01 11:59

What are common uses for Python\'s built-in coerce function? I can see applying it if I do not know the type of a numeric value as per the document

相关标签:
2条回答
  • 2021-01-01 12:25

    Python core programing says:

    Function coerce () provides the programmer do not rely on the Python interpreter, but custom two numerical type conversion."

    e.g.

    >>> coerce(1, 2)
    (1, 2)
    >>>
    >>> coerce(1.3, 134L)
    (1.3, 134.0)
    >>>
    >>> coerce(1, 134L)
    (1L, 134L)
    >>>
    >>> coerce(1j, 134L)
    (1j, (134+0j))
    >>>
    >>> coerce(1.23-41j, 134L)
    ((1.23-41j), (134+0j))
    
    0 讨论(0)
  • 2021-01-01 12:42

    Its a left over from early python, it basically makes a tuple of numbers to be the same underlying number type e.g.

    >>> type(10)
    <type 'int'>
    >>> type(10.0101010)
    <type 'float'>
    >>> nums = coerce(10, 10.001010)
    >>> type(nums[0])
    <type 'float'>
    >>> type(nums[1])
    <type 'float'>
    

    It is also to allow objects to act like numbers with old classes
    (a bad example of its usage here would be ...)

    >>> class bad:
    ...     """ Dont do this, even if coerce was a good idea this simply
    ...         makes itself int ignoring type of other ! """
    ...     def __init__(self, s):
    ...             self.s = s
    ...     def __coerce__(self, other):
    ...             return (other, int(self.s))
    ... 
    >>> coerce(10, bad("102"))
    (102, 10)
    
    0 讨论(0)
提交回复
热议问题