📜  Python3 中级主题

📅  最后修改于: 2022-05-13 01:55:47.406000             🧑  作者: Mango

Python3 中级主题

在了解了Python的基础知识之后,您将有兴趣了解更多关于 Python3 编程语言的更进一步和更高级的主题。
本文涵盖了它们。
请记住, Python完全适用于缩进,建议通过运行一些程序来练习一下。使用 tab 键为您的代码提供缩进。

本文分为以下五个部分:

  1. 课程
    就像所有其他面向对象编程语言一样, Python支持类。让我们看一下Python类的一些要点。
    • 类由关键字class创建。
    • 属性是属于类的变量。
    • 属性始终是公共的,可以使用点 (.)运算符访问。例如:Myclass.Myattribute

    类的示例例如:

    # creates a class named MyClass
    class MyClass:  
            # assign the values to the MyClass attributes
            number = 0       
            name = "noname"
      
    def Main():
            # Creating an object of the MyClass. 
            # Here, 'me' is the object
            me = MyClass() 
      
            # Accessing the attributes of MyClass
            # using the dot(.) operator   
            me.number = 1337    
            me.name = "Harssh"
      
            # str is an build-in function that 
            # creates an string
            print(me.name + " " + str(me.number))
         
    # telling python that there is main in the program.
    if __name__=='__main__':  
            Main()
    

    输出 :

    Harssh 1337
    
  2. 方法
    方法是一堆代码,旨在执行 Python 代码中的特定任务。
    • 属于类的函数称为方法。
    • 所有方法都需要'self'参数。如果您使用其他 OOP 语言进行编码,您可以将“self”视为用于当前对象的“this”关键字。它取消隐藏当前的实例变量。'self' 主要像 'this' 一样工作。
    • 'def'关键字用于创建新方法。
    # A Python program to demonstrate working of class
    # methods
      
    class Vector2D:
            x = 0.0
            y = 0.0
      
            # Creating a method named Set
            def Set(self, x, y):     
                    self.x = x
                    self.y = y
      
    def Main():
            # vec is an object of class Vector2D
            vec = Vector2D()   
             
            # Passing values to the function Set
            # by using dot(.) operator.
            vec.Set(5, 6)       
            print("X: " + str(vec.x) + ", Y: " + str(vec.y))
      
    if __name__=='__main__':
            Main()
    

    输出 :

    X: 5, Y: 6
  3. 遗产
    继承被定义为特定类从其基类继承特征的一种方式。基类也称为“超类”,从超类继承的类称为“子类”

    遗产
    如图所示,Derived 类可以继承其基类的特性,也可以定义自己的特性。

    # Syntax for inheritance
      
    class derived-classname(superclass-name)
    
    # A Python program to demonstrate working of inheritance
    class Pet:
            #__init__ is an constructor in Python
            def __init__(self, name, age):     
                    self.name = name
                    self.age = age
      
    # Class Cat inheriting from the class Pet
    class Cat(Pet):         
            def __init__(self, name, age):
                    # calling the super-class function __init__ 
                    # using the super() function
                    super().__init__(name, age) 
      
    def Main():
            thePet = Pet("Pet", 1)
            jess = Cat("Jess", 3)
              
            # isinstance() function to check whether a class is 
            # inherited from another class
            print("Is jess a cat? " +str(isinstance(jess, Cat)))
            print("Is jess a pet? " +str(isinstance(jess, Pet)))
            print("Is the pet a cat? "+str(isinstance(thePet, Cat)))
            print("Is thePet a Pet? " +str(isinstance(thePet, Pet)))
            print(jess.name)
      
    if __name__=='__main__':
            Main()
    

    输出 :

    Is jess a cat? True
    Is jess a pet? True
    Is the pet a cat? False
    Is thePet a Pet? True
    Jess
    
  4. 迭代器
    迭代器是可以迭代的对象。
    • Python使用 __iter__() 方法返回类的迭代器对象。
    • 然后迭代器对象使用 __next__() 方法获取下一项。
    • 当引发 StopIteration 异常时,for 循环停止。
    # This program will reverse the string that is passed
    # to it from the main function
    class Reverse:
        def __init__(self, data):
            self.data = data
            self.index = len(data)        
      
        def __iter__(self):
            return self
          
        def __next__(self):
            if self.index == 0:
                raise StopIteration    
            self.index-= 1
            return self.data[self.index]
      
    def Main():
        rev = Reverse('Drapsicle')
        for char in rev:
            print(char)
      
    if __name__=='__main__':
        Main()
    

    输出 :

    e
    l
    c
    i
    s
    p
    a
    r
    D
    
  5. 发电机
    • 另一种创建迭代器的方法。
    • 使用函数而不是单独的类
    • 为 next() 和 iter() 方法生成后台代码
    • 使用称为 yield 的特殊语句保存生成器的状态并为再次调用 next() 设置恢复点。
    # A Python program to demonstrate working of Generators
    def Reverse(data):
        # this is like counting from 100 to 1 by taking one(-1) 
        # step backward.
        for index in range(len(data)-1, -1, -1):
            yield data[index]
      
    def Main():
        rev = Reverse('Harssh')
        for char in rev:
            print(char)
        data ='Harssh'
        print(list(data[i] for i in range(len(data)-1, -1, -1)))
      
    if __name__=="__main__":
        Main()
    

    输出 :

    h
    s
    s
    r
    a
    H
    ['h', 's', 's', 'r', 'a', 'H']