Heim  >  Artikel  >  Backend-Entwicklung  >  Nachlesen des Python-Moduls __builtins__

Nachlesen des Python-Moduls __builtins__

大家讲道理
大家讲道理Original
2016-11-07 17:27:401227Durchsuche

1.isinstance-Funktion: Zusätzlich zum Typ als Parameter können Sie auch ein Typtupel als Parameter verwenden.

isinstance(obj,basestring)===isinstance(obj,(str,unicode))

2.getattr-Funktion: Sie können einen Standardwert angeben, um das Auslösen von Fehlern zu vermeiden.

writte=getattr(obj,'write',sys.stdout.write)

3.Typ-Funktion: Sie können den Typ eines Objekts abrufen oder direkt daraus einen neuen Typ erstellen:

>>> Point=type('Point',(object,),{'x':0,'y':0})
>>> p=Point()
>>> p.x,p.y
(0, 0)
>>> p=Point(3,8)
Traceback (most recent call last):
  File "<pyshell#55>", line 1, in <module>
    p=Point(3,8)
TypeError: object() takes no parameters
>>> pprint.pprint(dir(Point))
[&#39;__class__&#39;,
 &#39;__delattr__&#39;,
 &#39;__dict__&#39;,
 &#39;__doc__&#39;,
 &#39;__format__&#39;,
 &#39;__getattribute__&#39;,
 &#39;__hash__&#39;,
 &#39;__init__&#39;,
 &#39;__module__&#39;,
 &#39;__new__&#39;,
 &#39;__reduce__&#39;,
 &#39;__reduce_ex__&#39;,
 &#39;__repr__&#39;,
 &#39;__setattr__&#39;,
 &#39;__sizeof__&#39;,
 &#39;__str__&#39;,
 &#39;__subclasshook__&#39;,
 &#39;__weakref__&#39;,
 &#39;x&#39;,
 &#39;y&#39;]
>>> p.name=&#39;source point&#39;
>>> p.name
&#39;source point&#39;
>>> pprint.pprint(dir(p))
[&#39;__class__&#39;,
 &#39;__delattr__&#39;,
 &#39;__dict__&#39;,
 &#39;__doc__&#39;,
 &#39;__format__&#39;,
 &#39;__getattribute__&#39;,
 &#39;__hash__&#39;,
 &#39;__init__&#39;,
 &#39;__module__&#39;,
 &#39;__new__&#39;,
 &#39;__reduce__&#39;,
 &#39;__reduce_ex__&#39;,
 &#39;__repr__&#39;,
 &#39;__setattr__&#39;,
 &#39;__sizeof__&#39;,
 &#39;__str__&#39;,
 &#39;__subclasshook__&#39;,
 &#39;__weakref__&#39;,
 &#39;name&#39;,
 &#39;x&#39;,
 &#39;y&#39;]
>>> def tostr(self):
    return &#39;(%s,%s)&#39;%(self.x,self.y)
>>> Point.__str__=tostr
>>> print p
(0,0)
>>> def init(self,x,y):
    self.x,self.y=x,y
     
>>> Point.__init__=init
>>> p2=Point(6,8)
>>> print p2
(6,8)
>>>

4.issubclass(bool,int)==True

5.numbers.Number ist die Basisklasse aller numerischen Typen

6.type(None)==NoneType, None ist Eine Konstante

7. Zusätzlich zur Iter(object)-Form verfügt die Iter-Funktion auch über iter(callable, sentinel), die auch ein Iteratorobjekt

>>> def getrand():
    import random
    return random.randint(1,100)
>>> for i in iter(getrand,50):print i,#获取第一次得到50之前的所有1-100的随机数
32 19 82 28 30 41 100 39 71 29 45 30 94 77 62 26 25 19 82 20 55 20 43 73
>>> for i in iter(getrand,50):print i,#获取第一次得到50之前的所有1-100的随机数
22 54 14 25 60 65 16 80 61 5 48 61 2 30 90 98 70 10 55 45 23 72 87 39 70 3 84 85
>>>

8.BaseException ist die Basisklasse aller Ausnahmen, und Exception ist nur die Basisklasse aller Ausnahmen, die nicht beendet werden

9.locals/globals/vars/dir:

[1]locals/globals ist sehr einfach, es ist ein lokales/globales Objektdikt relativ zum aktuellen Bereich

[2]vars()==locals(), vars(obj )==obj.__dict__

[3] Keine Parameter, set(dir())==set(locals().keys()); if hasattr(obj,'__dir__')=>dir( obj)==obj.__dir__(); andernfalls gibt dir(obj) alle Attribute des Moduls zurück, wenn obj ein Klassenobjekt ist. und dann die von der Basisklasse geerbten Attribute; wenn obj ein Instanzobjekt ist, gibt dir(obj) die für das Instanzobjekt spezifischen Eigenschaften, die Eigenschaften der Klasse, zu der es gehört, und die von der Basisklasse geerbten Eigenschaften zurück Klasse, zu der es gehört. [Jede Änderung an einem Klassenobjekt wird auf sein Instanzobjekt übertragen; jede Änderung an der Basisklasse wird auch auf die abgeleitete Klasse übertragen. Natürlich, außer der Attributmaskierung. 】

10.Enumerate-Funktion: enumerate(obj,[start]), wenn start definiert ist, beginnt die Ordinalzahl beim Start und nicht bei der Standardnull.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn