擅长:python、mysql、java
<p>下面是一个修复了即时错误的重构</p>
<pre class="lang-py prettyprint-override"><code># There is no class here and no self here don't use self as argument
def random_select():
# Open a file handle, pass it to the CSV reader instance
with open("randomwords.csv") as r:
# Read all words from all lines into a single list
words = [word for line in csv.reader(r) for word in line]
# Pick out two random words
return ''.join([random.choice(words), random.choice(words)])
</code></pre>
<p>内部函数通常应该只是<code>return</code>一个结果;然后,调用方可以<code>print</code>根据自己的意愿返回结果</p>
<p>对于较短的输入列表,同一个单词随机抽取两次的概率非常高。你的问题甚至不清楚你是否真的想要列表中的两个随机单词,但这是我关于代码应该产生什么的最好猜测。如果你想要其他的东西,希望它现在应该是显而易见的改变</p>
<p>每次调用此函数时,再次将CSV文件读入内存的效率极低;可能重构代码,将列表读入内存一次,然后在需要更多单词时从列表中随机挑选出单词</p>
<p>CSV文件可能根本不适合这种用例。自20世纪60年代末以来,存储单词列表的标准方法至少是一个简单的文本文件,每行一个单词或短语</p>