python - 类和函数之间的变量处理
问题描述
我正在尝试运行脚本,直到随机生成的数字与线程号不匹配。我正在使用多线程。(我只是在这里复制了其中一个)。
在我将 randomnumbers() 生成器移到一个函数中之前,一切都运行良好。只要生成的数字在“runmain”函数中,就可以了。
def randomnumbers():
guessednumber = random.randint(1,101)
return guessednumber
def runmain(number, guessednumber):
while guessednumber!= number:
randomnumbers()
if guessednumber == number:
print(guessednumber)
print(number)
class myClass1(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
self.start()
def run(self):
while True:
number = 1
randomnumbers()
runmain(number, guessednumber)
myClass1()
我错过了什么?
解决方案
您定义的函数randomnumbers()
是一个生成器,因此它返回一个需要捕获的值(将其分配给变量或作为参数传递给函数)。
您guessednumber
在函数randomnumbers()
中返回变量实际上并不返回该变量,而是返回其捕获的值(在这种情况下为随机整数)。
def randomnumbers():
return random.randint(1,101) # Just return the value immediately without assigning to a varialble since it's not needed
def runmain(number, guessednumber):
while guessednumber!= number:
guessednumber = randomnumbers() # Capture the returned value from randomnumbers() into the variable in comparison (guessednumber)
print(guessednumber) # No need to have an "if" statement here, since while loop will automatically break when (guessednumber==randomnumbers()) condition is satisfied
print(number)
class myClass1(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
self.start()
def run(self):
while True:
number = 1
runmain(number, randomnumbers()) # Passed the returned value from the function randomnumbers() as an argument in runmain()
推荐阅读
- django - 搜索功能什么都不返回 - Django
- swift - Xcode 10 中的离子发布
- php - FPDF 多单元格相同高度
- ruby-on-rails - en.yml 中的新行不会在 html 页面上呈现
- ruby-on-rails - Ruby on rails 更新用户角色
- c - 使用指针改变矩阵
- jenkins - 在没有安全性的情况下安装 Jenkins 或访问 localhost 以外的其他权限
- mysql - MySQL MVCC 用于构建先前快照的高级算法
- javascript - 为什么这个 javascript 函数返回 undefined ?
- sql - 在物化视图中使用 union 或 union all 导致 PostgreSQL 错误