Am 17.05.19 um 06:13 schrieb Stefan Ram:   However, look at this

|>>> print( str( print ))
|<built-in function print>

|>>> print( repr( print ))
|<built-in function print>

   . While it is nice that »str( print )« gives some useful
   information, I would expect »repr( print )« to give
»print« -

This is impossible. Python does not use "call by name", so a function cannot know how the argument is called in the upper stack level. Consider:


Apfelkiste:inotes chris$ python3
Python 3.6.1 |Anaconda 4.4.0 (x86_64)| (default, May 11 2017, 13:04:09)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> blafasel = print
>>> print(repr(blafasel))
<built-in function print>
>>>

You'll have to accept that not all Python objects can be represented as literals. While a user defined function /could/ be printed as a lambda, so expecting:

def test(x):
        return 2*x

print(repr(test))

-> lambda x : 2*x

would be half-reasonable, it is impossible to print out the C source code of the built-in print function, unless one builds a JIT C compiler into Python.

        Christian
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to