首页 新闻 会员 周边
1
回答数

已关闭问题 迭代器是类对象,生成器是函数

迭代器: 需要定义一个类,并实现 __iter__() 和 __next__() 方法 示例: class Countdown: def __init__(self, step): self.step
1
回答数

已关闭问题 当一个函数中包含 yield 关键字时,Python 会自动为这个函数生成 __iter__ 和 __next__ 方法

这意味着这个函数变成了一个生成器函数,调用它时会返回一个生成器对象,而不是直接执行函数体 生成器对象是一个迭代器,它实现了 __iter__ 和 __next__ 方法 。__iter__ 方法返回生
0
回答数

已关闭问题 自定义多迭代类型

# 返回多个独立的可迭代对象 class MultiIterator: def __init__(self, wrapped): self.wrapped = wrapped # 封装将被迭代的对象
1
回答数

回答被采纳 raise (StopIteration)这段代码场景

class Next: def __init__(self, wrapped): self.wrapped = wrapped self.offset = 0 def __iter__(self):
1
回答数

已关闭问题 为什么iter(c1)就会调用__getitem__,iter函数不是自动调用对象得__iter__方法吗

class cls: def __init__(self,data): self._data = data def __getitem__(self,index): return self._data
1
回答数

回答被采纳 报错啦:TypeError: __iter__()missing 1 required positional argument: 'index'

class cls: def __init__(self,data): self.data = data def __iter__(self,index): print("call item") re
1
回答数

回答被采纳 python打包拆包

定义阶段——形参里的 ** 是 打包/收集 def foo(**kw): # 这里的 ** 把调用者传来的所有 key=value 收成一个 dict print(type(kw), kw) 这个位置
1
回答数

已关闭问题 纯 Python 内置序列类型切片都是返回新对象

类别切片结果典型例子是否返回新对象 不可变序列 新对象(拷贝) str, bytes, tuple ✅ 总是新对象 可变序列 新对象(拷贝) list, bytearray ✅ 总是新对象 纯 Pyt
1
回答数

已关闭问题 类属性/方法共享,实例属离 —— 这是 Python 对象模型的设计初衷

类属性/方法共享,实例属离 —— 这是 Python 对象模型的设计初衷。真的吗,对吗,官网有说吗 1. 实例属性只存在于该实例的 __dict__(或 __slots__),类字典里永远看不到 官
1
回答数

回答被采纳 BNF/语法手册

BNF = Backus–Naur Form(巴科斯-瑙尔范式)1960 年为 ALGOL 60 设计,现在几乎所有语言规范都用它(或扩展版 EBNF)来描述“语法长什么样”。 核心记号就三个: ::
0
回答数

已关闭问题 python中私有不能访问是指什么

Python 的“私有”并不是真正禁止访问,而是靠名字改写(name mangling) 实现的一种伪私有机制。一句话:底层名字被偷偷改了,导致“按原名字”找不到而已。 改写规则在类体里写任何以 双下
1
回答数

回答被采纳 实例属性能继承?

fo = open("PY301-2.txt","w") class Horse(): def __init__(self, category, gender, age): self.category
1
回答数

已关闭问题 Python 里: 任何非零整数(包括负数)都当作 True 只有整数 0 被当作 False

x=10 while x: x-=1 if x%2: print(x,end="") else: pass 输出结果是
1
回答数

回答被采纳 立刻向前滑动补位,这就是“塌缩”

letter = ['A','B','C','D','D','D'] for i in letter: if i == 'D': letter.remove(i) print(letter) 输出结果
0
回答数

已关闭问题 字符串可以切片赋值?

在 Python 里,字符串本身不可变(immutable),所以 “切片赋值” 这种原地修改操作 不被允许: Python 复制 s = "hello" s[1:4] = "ELL" # TypeE
1
回答数

回答被采纳 定义学生选修课程的关系模式如下:

S(S#,Sn,Sd,Sa)(其属性分别为学号、姓名、所在系、年龄) C(C#,Cn,P#)(其属性分别为课程号、课程名、选修课) SC(S#,C#,G)(其属性分别为学号、课号和成绩) 检索选修了课
1
回答数

回答被采纳 在关系数据库中,描述全局数据逻辑结构的是

A. 内模式 B. 用户模式 C. 概念模式 D. 物理模式
1
回答数

回答被采纳 在具有2n个节点的完全二叉树中,叶子节点个数为

A. n-1 B. n C. n+1 D. n/2 正确的是
1
回答数

回答被采纳 带链队列空的条件是

A. font=rear=NULL B. front=-1且rear=NULL C. front=NULL 且rear=-1 D. front=rear=-1
1
回答数

回答被采纳 下列描述错误的是

A. 线性结构也能采用链式存储结构 B.线性结构一定能采用顺序存储结构 C.有的非线性结构也能采用顺序存储结构 D.非线性结构一定不能采用顺序存储结构
1
回答数

已关闭问题 l = "abcd" print(l[:-1])

l = "abcd" print(l[:-1])
0
回答数

已关闭问题 解题1----

l = "abcd" def f(x,result=["a","b","c","d"]): if x: result.remove(x[-1]) f(x[:-1]) return result pri
1
回答数

回答被采纳 自定义类如果用索引或者slice访问,只能在__getitem__()里面套用list等基本类型来取值吗,这不算是实现了__getitem__吧,不还是list自身取值吗,外面套了层壳

自定义类如果用索引或者slice访问,只能在__getitem__()里面套用list等基本类型来取值吗,这不算是实现了__getitem__吧,不还是list自身取值吗,外面套了层壳
1
回答数

回答被采纳 L[0] 和 L[0:2]/L[slice(0,2)] 在 CPython 底层走的是两条完全不同的代码路径

切片一定会新建一个 PyListObject;单个索引只是返回已有对象的引用 >>> import dis >>> dis.dis(lambda: L[0]) 1 0 LOAD_GLOBAL 0 (L
1
回答数

回答被采纳 Python 中,序列(如 list、tuple、str 等)之所以可以通过索引取值,是因为它们实现了 __getitem__ 方法

lst = [10, 20, 30]print(lst[1]) # 输出 20 这背后其实是调用了: lst.__getitem__(1) lst[1] → lst.__getitem__(1) 只是