You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3中return语句无法返回值,改用yield也无效该如何解决

问题原因
  • 你编写的card()函数逻辑本身无错误,return random.choice(cards)语句确实会返回符合预期的随机卡牌数值,不存在返回值异常问题。
  • 你观测到“没有返回任何结果”是Python脚本的运行机制导致:在非交互模式下执行脚本时,单独的函数调用语句得到的返回值如果没有被打印输出、或者赋值给变量使用,不会自动展示在控制台中,和你使用的PyCharm、repl.it运行平台无关。
  • 更换为yield后出现相同问题也是同理:生成器对象需要被迭代取值后才能得到对应内容,直接调用生成器函数不会自动输出结果。
解决方法

方案1:直接查看返回结果

如果仅需要验证函数返回值是否正确,用print()函数包裹函数调用语句即可,修改后代码如下:

import random
def card():
    cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
    return random.choice(cards)
print(card())

运行后控制台就会输出随机抽取的卡牌值。

方案2:后续使用返回结果

如果需要将抽卡结果用于后续逻辑,将函数返回值赋值给变量即可,示例如下:

import random
def card():
    cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
    return random.choice(cards)

# 将返回值赋值给变量后续使用
user_card = card()
print(f"本次抽取的卡牌为:{user_card}")

yield版本实现参考

如果你需要用yield实现可重复抽卡的生成器,参考写法如下:

import random
def card_generator():
    cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
    while True:
        yield random.choice(cards)

# 实例化生成器
gen = card_generator()
# 每次调用next即可抽取一张新卡牌
print(next(gen))
print(next(gen))

内容的提问来源于stack exchange,提问作者Shubhangi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:09:03