Python学习笔记#01

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

一些琐碎的问题……


一、python中的“方法”指什么

  • 在Python中,“方法”(Method)是绑定到类或者类实例的函数。
  • 换句话说,方法是类的一部分,它定义了对象可以执行的操作。当一个函数被定义在某个类的内部时,它就成为了该类的一个方法。

方法通常至少接受一个名为self的参数(在类方法中可以是cls,但这种情况较少见),这个self参数是对类实例自身的引用。通过self,方法可以访问类实例的属性和其他方法。

这里有一个简单的Python类示例,展示了方法的使用:

class MyClass: 
def __init__(self, value): 
self.value = value # 实例变量 

def my_method(self): 
# 方法,使用self来访问实例变量 
return self.value * 2 

# 创建MyClass的一个实例 
my_instance = MyClass(5) 

# 调用实例的方法 
result = my_instance.my_method() 
print(result) # 输出: 10
  • 在这个例子中,__init__是一个特殊的方法,称为类的构造器或初始化方法。当创建类的新实例时,Python会自动调用这个方法。my_method是另一个方法,它使用了self来访问实例变量value,并执行了一个简单的操作(将value乘以2)然后返回结果。
  • 需要注意的是,虽然方法通常与类相关联,但它们也可以被定义在类之外作为普通函数。然而,当方法被定义在类内部时,它们可以通过类的实例来调用,并且可以访问该实例的属性和其他方法。这提供了一种将数据和操作数据的方法封装在一起的方式,这是面向对象编程(OOP)的一个核心概念。

二、什么是__iter__() 和 next()方法

  • 在Python中,iter() 和 next() 是两个特殊的方法,它们与可迭代对象(Iterable)和迭代器(Iterator)紧密相关。

iter() 方法

  • iter() 方法是一个对象的方法,用于获取该对象的迭代器。当你对一个可迭代对象使用iter()函数或者将其用于for循环中时,Python会自动调用该对象的__iter__()方法来获取一个迭代器。这个迭代器随后被用于在for循环中逐个访问可迭代对象的元素。
  • iter() 方法必须返回一个迭代器对象,该对象定义了__next__()方法。

next() 方法

  • next() 方法是迭代器对象的一个方法,它返回迭代器的下一个元素。在for循环中,每次迭代都会调用迭代器的__next__()方法来获取下一个元素。如果所有元素都已被访问,则__next__()方法应该抛出一个StopIteration异常来通知迭代的结束。

下面是一个简单的例子,展示了如何定义一个类,该类通过实现__iter__()和__next__()方法来成为自己的迭代器:

class Counter: 
def __init__(self, low, high): 
self.current = low 
self.high = high 

def __iter__(self): 
# 实例本身就是迭代器,因此返回self 
return self 

def __next__(self): 
# 检查迭代是否完成 
if self.current > self.high: 
raise StopIteration 
else: 
# 返回下一个值并更新状态 
self.current += 1 
return self.current - 1 
# 使用示例 
counter = Counter(1, 3) 
it = iter(counter) # 或者直接在for循环中使用counter,因为__iter__返回self 
print(next(it)) # 1 
print(next(it)) # 2 
print(next(it)) # 3 
# print(next(it)) # 这里会抛出StopIteration异常 

# 或者使用for循环 
for value in counter: 
print(value) # 输出: 1 2 3

三、什么是可迭代对象

  • 可迭代对象(Iterable)在Python中是一个非常重要的概念,它指的是那些可以被迭代(即可以一个接一个地访问其元素)的对象。
  • 迭代是Python中访问集合元素(如列表、元组、字典、集合、字符串等)的一种方式,而不需要通过索引。
    在Python中,大多数内置的数据类型都是可迭代的,比如列表(list)、元组(tuple)、字典(dict)、集合(set)、字符串(str)等。此外,用户也可以自定义可迭代对象。

一个对象要成为可迭代对象,它必须实现两个方法:iter() 和 next()(在Python 2中是 next())。但是,在实践中,我们通常只需要实现 iter() 方法,该方法返回一个迭代器对象。迭代器对象必须实现 next() 方法(以及可选的 iter() 方法,但通常它会返回自身),以便在迭代过程中逐个访问元素。

生成器是Python中一种特殊的迭代器,它使用yield语句来返回元素,而不是使用return语句。当函数中包含yield语句时,该函数就不再是一个普通的函数,而是一个生成器函数。调用生成器函数时,它会返回一个生成器对象,这个对象是可迭代的,并且每次迭代都会执行到yield语句处,返回yield后面的值,然后暂停执行,等待下一次迭代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值