a = (x for x in range(5))
print(type(a)) # prints "<class 'generator'>"
但是这会引发SyntaxError
(如预期的那样):
a = x for x in range(5)
如果我想用生成器中的值定义元组,这两个都可以工作:
tup1 = tuple(x for x in range(5))
tup2 = tuple((x for x in range(5)))
在tup1
中,括号是tuple
类的构造函数的一部分。但为什么会有效?
答案 0 :(得分:1)
在你的例子中:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<style>
p {color:#000;}
</style>
<script>
$(document).ready(function(){
$("#f-hdr").click(function(){
$("#hidden").toggle(1000);
});
});
</script>
</head>
<body>
<a href="#anch">Link to anchor within hidden div</a>
<h2><a id="f-hdr" href="javascript:void(0)">Div Header</a></h2>
<div id="hidden" style="display:none">
<p id="anch">some text</p>
</div>
</body>
</html>
是生成器<AnimatedCircularProgress
size={200}
width={3}
fill={this.state.fill}
tintColor="#00e0ff"
backgroundColor="#3d5875">
{
(fill) => (
<Text style={styles.points}>
{ this.state.fill }
</Text>
)
}
</AnimatedCircularProgress>
无效a1 = (x for x in range(5))
a2 = x for x in range(5)
将生成器转换为元组。与写tup1 = tuple(x for x in range(5))
相比。 第三种方法是首选,因为如果你想得到一个元组,它会更清晰,噪音更小。第一种方法只是一个生成器,如果你实际上并不需要实例本身,那将是首选的,例如想要循环它。