python-internals

    2熱度

    1回答

    我知道如何使用發電機,但我不知道他們的內部任何事情。我嘗試這樣做: In [4]: def f(): yield 1 In [6]: type(f()) Out[6]: generator 現在我拆開它: In [7]: dis.dis(f) 1 0 LOAD_CONST 1 (1) 3 YIELD_VALUE 4 POP_TOP

    4熱度

    1回答

    在Python中,當有對象時,可以使用int函數將其轉換爲整數。例如int(1.3)將返回1。這可以通過使用對象的__int__魔術方法在內部工作,在這種特殊情況下爲float.__int__。 在Python中Fraction對象可以用來構造精確的分數。 from fractions import Fraction x = Fraction(4, 3) Fraction對象缺少__int_

    1熱度

    2回答

    如果拆卸以下功能 def test(): t = (1, 2, [30]) t[2] += [40] return t 你會看到,t[2] += [40]相應的字節碼如下: 3 18 LOAD_FAST 0 (t) 21 LOAD_CONST 2 (2) 24 DUP_TOPX 2 27 BINAR

    1熱度

    1回答

    我知道我的表面看起來微不足道,但我無法弄清楚爲什麼'stop'等於零,因爲'start'的值已經被覆蓋了。但是當我模擬出相同的場景時,它確實覆蓋了我在這裏錯過了什麼? def interval(start, stop =None, step = 1): 'Imitates range() for step >0 ' if stop is None: start, s

    9熱度

    1回答

    >>> a=1 >>> b=1 >>> id(a) 140472563599848 >>> id(b) 140472563599848 >>> x=() >>> y=() >>> id(x) 4298207312 >>> id(y) 4298207312 >>> x1=(1) >>> x2=(1) >>> id(x1) 140472563599848 >>> id(

    12熱度

    1回答

    我正在讀一些代碼,看起來基本上是這樣的: class Foo(object): class_name = __module__.replace('_', '-') 對我來說,這看起來很奇怪(__module__,那是什麼?),所以我就去看了看蟒蛇data-model。快速搜索顯示__module__是類對象和函數對象的屬性。但是,在全局名稱空間中沒有可用的__module__(可以通

    13熱度

    1回答

    我正在面對Python上散列函數的一個非常奇怪的行爲。當我在Mac OS(10.10)上運行以下命令時,會從不同的調用中獲得不同的值。 $ python -c "print hash(None)" -9223372036579216774 $ python -c "print hash(None)" -9223372036582852230 在另一方面,當我在Ubuntu 14.04上運

    5熱度

    1回答

    我正在瀏覽six.py in the django utils的代碼,對於非Jython實現,它試圖找到int的MAXSIZE。現在,這樣做的方式很有趣 - 不是在語句本身捕獲異常,而是將語句封裝在自定義類中的__len__方法中。這可能是什麼原因造成的? class X(object): def __len__(self): return 1 << 31 try:

    5熱度

    1回答

    當在Python中使用字典時,this page表示遍歷字典元素的時間複雜度爲O(n),其中n是字典最大的大小。 但是,我不認爲有一個明顯的方式來遍歷散列表的元素。在遍歷哈希表的元素時,我可以假設dict.iteritems()有良好的性能,而沒有太多的開銷? 由於字典在Python中使用很多,我假設這是以一種智能的方式實現的。不過,我需要確保。

    7熱度

    1回答

    下面的函數返回None: In [5]: def f(): ...: pass 所以我沒有被這個輸出驚訝: In [8]: dis.dis(f) 2 0 LOAD_CONST 0 (None) 3 RETURN_VALUE In [10]: f.__code__.co_consts Out[10]: (None,) 好吧,這是有道理