Python 高级特性
一、面向对象编程
Python中支持面向对象编程,通过使用类和对象的概念可以更好地管理和维护复杂的代码。在Python中,我们可以通过定义类来创建新的对象。类可以包含属性和方法,属性是类的属性或对象的属性,方法是类的方法或对象的方法。
1、定义类和对象
定义类时需要使用关键字class
,后面跟上类名。类名通常采用首字母大写的命名法。在类中定义方法时,第一个参数必须为self
,代表当前对象。定义对象时,需要调用类并将其赋值给变量。
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(self.name + "汪汪叫")
# 创建对象
my_dog = Dog("旺财", 3)
my_dog.bark()
2、继承和多态
Python支持继承和多态,通过继承可以复用已有代码,通过多态可以增加代码的灵活性。
# 定义父类
class Animal:
def eat(self):
print("动物正在吃东西")
# 定义子类
class Cat(Animal):
def eat(self):
print("猫正在吃鱼")
class Dog(Animal):
def eat(self):
print("狗正在啃骨头")
# 多态
def feed_animal(animal):
animal.eat()
cat = Cat()
dog = Dog()
feed_animal(cat) # 猫正在吃鱼
feed_animal(dog) # 狗正在啃骨头
二、高阶函数
Python中函数是一等公民,支持函数作为参数、函数作为返回值、函数内定义函数等高级特性。
1、函数作为参数
在Python中,我们可以将一个函数作为另一个函数的参数,这种函数被称为高阶函数。常见的高阶函数有map
、filter
和reduce
。
# map函数:将一个列表中的元素映射成另一个列表
def square(x):
return x * x
result = map(square, [1, 2, 3, 4, 5])
print(list(result)) # [1, 4, 9, 16, 25]
# filter函数:过滤列表中的元素
def is_even(x):
return x % 2 == 0
result = filter(is_even, [1, 2, 3, 4, 5])
print(list(result)) # [2, 4]
# reduce函数:累积列表中的元素
from functools import reduce
def add(x, y):
return x + y
result = reduce(add, [1, 2, 3, 4, 5])
print(result) # 15
2、函数作为返回值
在Python中,我们可以在一个函数内部定义另一个函数,并将其作为返回值。这种函数被称为闭包。
def calc_power(n):
def inner(x):
return x ** n
return inner
square = calc_power(2)
print(square(3)) # 9
三、装饰器
Python中的装饰器是一种特殊的函数,用于修改其他函数的行为。常见的装饰器包括@staticmethod
、@classmethod
和@property
。
1、@staticmethod
装饰器
@staticmethod
是一个静态方法装饰器,用于定义与类无关的函数。在静态方法中不需要引用任何类属性或方法。
class Calculator:
@staticmethod
def add(x, y):
return x + y
print(Calculator.add(1, 2)) # 3
2、@classmethod
装饰器
@classmethod
是一个类方法装饰器,用于定义与特定类相关的函数。类方法的第一个参数必须为cls
,代表当前类。
class Person:
age = 25
@classmethod
def getAge(cls):
return cls.age
print(Person.getAge()) # 25
3、@property
装饰器
@property
是一个属性装饰器,用于将一个函数转换为只读属性。当访问该属性时,会自动调用该函数。
class Person:
def __init__(self, age):
self._age = age
@property
def age(self):
return self._age
p = Person(25)
print(p.age) # 25
四、异步编程
Python支持异步编程,通过使用async
和await
关键字可以轻松实现异步编程。异步编程可以提高程序的效率和响应速度。
1、异步函数
异步函数使用async
关键字定义,可以将其看作一个协程(coroutine)。在异步函数中可以使用await
关键字等待其他协程或异步任务的完成。
import asyncio
async def hello():
print("Hello")
await asyncio.sleep(1)
print("world")
await hello() # Hello\n(等待1s)\nworld
2、异步上下文管理器
异步上下文管理器使用async
关键字定义,通过实现__aenter__
和__aexit__
方法来支持在异步上下文中使用with
语句。
class AsyncFile:
def __init__(self, file):
self.file = file
async def __aenter__(self):
self.handle = await asyncio.to_thread(open, self.file, 'r')
return self.handle
async def __aexit__(self, exc_type, exc, tb):
await asyncio.to_thread(self.handle.close)
async with AsyncFile('file.txt') as f:
print(await asyncio.to_thread(f.read))
以上就是Python基础3的一些高级特性。通过了解以上内容,我们可以更好地管理和维护代码,提高程序的效率和可读性。