为什么我不能在定义中使用循环 'for i in...'? (我没有使用局部变量)
Why can't I use loop 'for i in...' in a definition? (Local Variable i not used)
我是 Python 和编码的新手,正在做一些在线练习。
我正在写一个 class 来制作随机数列表:
class RandomList:
def create_list(self):
self.list = []
def fill_list(self, min, max, range):
self.list = [random.randint(min, max) for i in range(range)]
首先 -->
我不明白 self.list = []
下的 Pycharm 警告信息
告诉我:
"Instance attribute list is defined outside init"
如果我写成:
会有什么区别
class RandomList:
def __init__(self):
self.list = []
其次 -->
当我调用 RandomList.fill_list
:
时,fill_list 函数不起作用
TypeError: 'int' object is not callable.
并且'i'下有一条警告信息:
Local Variable not used
我不明白为什么
我在这里不知所措,因为当我使用例如:
a = [random.randint(min, max) for i in range(range)]
在 class 之外没有任何问题。我想我一定是把事情搞混了...
PEP8 约定只在 __init__
内初始化实例属性。否则代码会变得一团糟,无法跟踪和调试,尤其是对于没有编写代码的人。
您会收到未使用 i
的警告,因为您没有使用它。使用 _
,这是 throw-away 变量的 de-facto 标准,或使用 self.list = [random.randint(min, max)] * range
,但 range
是一个错误的变量名('min'和 'max'),请参阅第 3 点。
您收到错误 TypeError: 'int' object is not callable.
,因为您在方法中使用 range
参数覆盖了 range
中的构建。 min
和 max
也是 built-in 函数,不应该用于变量名。
这里(range
是保留字)
import random
class RandomList:
def __init__(self, min, max, _range):
self.lst = [random.randint(min, max) for i in range(_range)]
rl = RandomList(4,7,10)
print(rl.lst)
输出
[5, 4, 5, 6, 6, 4, 4, 6, 7, 6]
第一:变量名不能与min,max,range一起使用
示例:
range = 4
for i in range(range): #you will get error
print("Hello!")
您的代码应该是
class RandomList:
def create_list(self):
self.list = []
def fill_list(self, minnum, maxnum, rangenum):
self.list = [random.randint(minnum, maxnum) for i in range(rangenum)]
你可以用
测试它
randlist = RandomList
randlist.create_list(randlist)
randlist.fill_list(randlist, 1, 5, 3)
print(randlist.list) #prints randomly like [1, 4, 3]
我是 Python 和编码的新手,正在做一些在线练习。
我正在写一个 class 来制作随机数列表:
class RandomList:
def create_list(self):
self.list = []
def fill_list(self, min, max, range):
self.list = [random.randint(min, max) for i in range(range)]
首先 -->
我不明白 self.list = []
下的 Pycharm 警告信息
告诉我:
"Instance attribute list is defined outside init"
如果我写成:
会有什么区别class RandomList:
def __init__(self):
self.list = []
其次 -->
当我调用 RandomList.fill_list
:
TypeError: 'int' object is not callable.
并且'i'下有一条警告信息:
Local Variable not used
我不明白为什么
我在这里不知所措,因为当我使用例如:
a = [random.randint(min, max) for i in range(range)]
在 class 之外没有任何问题。我想我一定是把事情搞混了...
PEP8 约定只在
__init__
内初始化实例属性。否则代码会变得一团糟,无法跟踪和调试,尤其是对于没有编写代码的人。您会收到未使用
i
的警告,因为您没有使用它。使用_
,这是 throw-away 变量的 de-facto 标准,或使用self.list = [random.randint(min, max)] * range
,但range
是一个错误的变量名('min'和 'max'),请参阅第 3 点。您收到错误
TypeError: 'int' object is not callable.
,因为您在方法中使用range
参数覆盖了range
中的构建。min
和max
也是 built-in 函数,不应该用于变量名。
这里(range
是保留字)
import random
class RandomList:
def __init__(self, min, max, _range):
self.lst = [random.randint(min, max) for i in range(_range)]
rl = RandomList(4,7,10)
print(rl.lst)
输出
[5, 4, 5, 6, 6, 4, 4, 6, 7, 6]
第一:变量名不能与min,max,range一起使用
示例:
range = 4
for i in range(range): #you will get error
print("Hello!")
您的代码应该是
class RandomList:
def create_list(self):
self.list = []
def fill_list(self, minnum, maxnum, rangenum):
self.list = [random.randint(minnum, maxnum) for i in range(rangenum)]
你可以用
测试它randlist = RandomList
randlist.create_list(randlist)
randlist.fill_list(randlist, 1, 5, 3)
print(randlist.list) #prints randomly like [1, 4, 3]