除非调用yield,否则Python Generator调用计数器不会增加

时间:2016-02-29 18:33:44

标签: python python-2.7 generator yield

我正在使用package com.example.apple.onlinesql; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; public class Answer extends AppCompatActivity { TextView questionTextView, answerTextView; String question, answer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_answer); Bundle bundle = getIntent().getExtras(); question = bundle.getString("question"); answer = bundle.getString("answer"); /*cannot resolve symbol findViewById()*/ questionTextView = (TextView) findViewById(R.id.questionTextView); answerTextView = (TextView) findViewById(R.id.answerTextView); questionTextView.setText(question); answerTextView.setText(answer); } } 库查看计算机上的所有文件。一旦我检查了100条记录,我想停止循环。如果永远不会调用scandir语句,我的变量yield永远不会增加,循环也不会停止。我已经放入了一些永远不会找到的虚假文件名c,因此永远无法找到thisfilewontbefound。为什么yield没有递增?

c

1 个答案:

答案 0 :(得分:1)

您的for循环正在等待生成器。如果执行yield,生成器将生成一个值。但yield永远不会被执行,因为没有这样的文件,因此for循环会等待很长时间,直到C:驱动器上的所有文件为止扫描并且发电机结束时没有产生任何东西。

将计数器放入发生器中,或者不对发生器中的文件进行过滤,让它更频繁地产生。