1. 集合:它不是映射也不是序列,相反,它们是唯一的不可变的对象的无序集合。集合可以通过调用内置set函数而创建,或者使用Python3中心的集合常量和表达式穿件,并且它支持一般的数学集合操作。其实在python3中,集合更像是一个没有值得字典的键。
    #ipython3
    
    In [1]: X = set('spam')
    
    In [2]: Y = {'h','a','m'}
    
    In [3]: X,Y
    Out[3]: ({'a', 'm', 'p', 's'}, {'a', 'h', 'm'})
    
    In [4]: X & Y
    Out[4]: {'a', 'm'}
    
    In [5]: X | Y
    Out[5]: {'a', 'h', 'm', 'p', 's'}
    
    In [6]: X - Y
    Out[6]: {'p', 's'}
    
    In [7]: {x ** 2 for x in [1,2,3,4]}
    Out[7]: {1, 4, 9, 16}
    
  2. 新数值类型:十进制数(固定精度浮点数)和分数(有一个分子和一个分母的有理数)。它们都用来解决浮点数学的局限性和内在的不精准性。
    In [1]: 1 / 3
    Out[1]: 0.3333333333333333
    
    In [2]: (2/3) + (1/2)
    Out[2]: 1.1666666666666665
    
    In [3]: import decimal
    
    In [4]: d = decimal.Decimal('3.141')
    
    In [5]: d + 1
    Out[5]: Decimal('4.141')
    
    In [6]: decimal.getcontext().prec = 2
    
    In [7]: decimal.Decimal('1.00') / decimal.Decimal('3.00')
    Out[7]: Decimal('0.33')
    
    In [8]: from fractions import Fraction  
    
    In [9]: f = Fraction(2,3)
    
    In [10]: f + 1
    Out[10]: Fraction(5, 3)
    
    In [11]: f + Fraction(1,2)
    Out[11]: Fraction(7, 6)
    
  3. 布尔值和None:预定义的True和False对象实际上是定制后以逻辑结果显示的整数1和0。以及长期以来一直支持的特殊占位符对象None(它通常用来初始化名字和对象)。
    In [1]: 1 > 2 , 1 < 2
    Out[1]: (False, True)
    
    In [2]: bool('spam')
    Out[2]: True
    
    In [3]: X = None
    
    In [4]: print(X)
    None
    
    In [5]: L = [None] * 5
    
    In [6]: L
    Out[6]: [None, None, None, None, None]
    
  4. 如何破坏代码的灵活性。内置函数tpye返回的类型对象是赋给该类型的另一个对象的一个对象。结果在Python3中略有不同,因为类型已经完全和类结合起来了。
    In [7]: type(L)
    Out[7]: list
    
    In [8]: type(type(L))
    Out[8]: type
    

    除了允许交互地探究对象,这个函数的实际应用是,允许编写代码来检查它所处理的对象的类型。实际上,在Python脚本中至少有三种方法可以做到这点。

    In [11]: if type(L) == type([]):  
       ....:     print('yes')
       ....:     
    yes
    
    In [13]: if type(L) == list:
       ....:     print('yes')
       ....:     
    yes
    
    In [15]: if isinstance(L,list):
       ....:     print('yes')
       ....:     
    yes
    

    尽管我们提供了所有的类型的检验方法,但其实,在Python程序中这样做基本都是错误的!在代码中检验了特定的类型,实际上破坏了它的灵活性,即 限制它只能使用一种类型工作,而没有这样的检测,代码也许能够使用整个范围的类型工作。这与前面我们讲到的多态的思想有些关联,它是由Python没有类 型声明而发展出来的。在Python中,我们编写对象接口(所支持的操作)而不是类型。不关注与特定的类型意味着代码会自动适应它们中的很多类型:任何具 有兼容接口的对象均能够工作,而不管它是什么对象类型。

  5. 用户自定义的类。
    class Worker:
        def __init__(self,name,pay):
            self.name = name
            self.pay = pay
        def lastName(self):
            return self.name.split()[-1]               //split()默认分割为空格
        def giveRaise(self,percent):
            self.pay *= (1.0 + percent)
    
    bob = Worker('Bob Smith',5000)
    sue = Worker('Sue Jones',6000)
    print(bob.lastName())
    print(sue.lastName())
    print(sue.pay)
    
    Smith
    Jones
    6600.000000000001
    

    隐含的‘self’对象是我们把这叫做面向对象型的原因,即一个类中的函数总是有一个隐含的对象。一般来说,基于类的类型是建立在并使用了核心类型的。

分类: Python3

1 条评论

5sbet4 · 2025-12-19 20:12

5sbet4 is alright. It’s pretty standard but gets the job done. There are other sites that are better, but there are also others that are way worse. If you’re curious give it a shot: 5sbet4

回复 5sbet4 取消回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注