how to determine for using c extension or not ?

umedoblock umedoblock at gmail.com
Mon Aug 3 10:57:24 EDT 2015


normal, no change
 >>> import bisect
 >>> bisect.bisect.__module__
'_bisect'

I change from "from _bisect import *" to "pass" in bisect.py

 >>> import bisect
 >>> bisect.bisect.__module__
'bisect'

bisect.bisect.__module__ return different results.
they are '_bisect' and 'bisect'.

I know that c extension document recomended us to use _ for c extension 
name  prefix.

I use "bisect.bisect.__module__" sentence to determine for using c 
extension or not.

thanks.

On 2015年08月03日 23:11, Joel Goldstick wrote:
> On Mon, Aug 3, 2015 at 10:01 AM, umedoblock <umedoblock at gmail.com> wrote:
>> sorry, Joel, Skip, Steven, and python-list members.
>>
>> I think that I don't sent my mail to python-list at python.org or I don't have
>> correct mail setting.
>>
>> so I send many mails.
>>
>> sorry... I should wait a day to get answer, sorry.
>>
>>
>> On 2015年08月03日 22:36, Steven D'Aprano wrote:
>>>
>>> On Mon, 3 Aug 2015 03:47 pm, umedoblock wrote:
>>>
>>>> Hello everyone.
>>>>
>>>> I use bisect module.
>>>
>>>
>>> You asked the same question FOUR times. Have patience. Your question goes
>>> all over the world, people may be asleep, or working, or just not know the
>>> answer. If you ask a question, and get no answers, you should wait a full
>>> day before asking again.
>>>
>>>
>>>> bisect module developer give us c extension as _bisect.
>>>>
>>>> If Python3.3 use _bisect, _bisect override his functions in bisect.py.
>>>
>>>
>>> So does Python 2.7.
>>>
>>>
>>>> now, I use id() function to determine for using c extension or not.
>>>
>>>
>>> The id() function doesn't tell you where objects come from or what
>>> language
>>> they are written in. But they will tell you if two objects are the same
>>> object.
>>>
>>>>>>> import bisect
>>>>>>> id(bisect.bisect)
>>>>
>>>> 139679893708880
>>>>>>>
>>>>>>> import _bisect
>>>>>>> id(_bisect.bisect)
>>>>
>>>> 139679893708880
>>>>
>>>> they return 139679893708880 as id.
>>>> so i believe that i use c extension.
>>>
>>>
>>> Correct.
>>>
>>> Also, you can do this:
>>>
>>>
>>> py> import bisect
>>> py> bisect.__file__
>>> '/usr/local/lib/python2.7/bisect.pyc'
>>> py> bisect.bisect.__module__  # Where does the bisect file come from?
>>> '_bisect'
>>> py> import _bisect
>>> py> _bisect.__file__
>>> '/usr/local/lib/python2.7/lib-dynload/_bisect.so'
>>>
>>> So you can see that _bisect is a .so file (on Linux; on Windows it will be
>>> a .dll file), which means written in C.
>>>
>>>
>>
>> --
>> https://mail.python.org/mailman/listinfo/python-list
>
> Welcome to the mailing list, and as I see above, you got a good answer.
>




More information about the Python-list mailing list