1.python生成器,以下是书上的一个例子:
>>>def my_range(first=0,last=10,step=1):
... number=first;
... while number<last:
... yield number
... number+=step
...
调用这个函数:
>>>range=my_range(1,5)
>>>for x in ranger:
... print(x)
...
1
2
3
4
这里我就想问问yield number那里,这里应该是返回number的值,可是下面为什么还会有代码,python的函数的返回值可以不放在函数最后吗?另外看不明白my_range函数的意思,有没有大神能解释一下?
2.python命名空间和作用域的问题
>>>animal='fruitbat'
>>>def change_and_print_global():
... print('inside change_anf_print_global:',animal)
... animal ='wombat'
... print('after the change:',animal)
...
>>>change_and_print_global()
执行上面这段代码会报错,local variable 'animal' referenced before assignment
然而,执行下面这段代码却不会报错
>>>def change_local():
... animal='wombat'
... print('inside change_local:',animal,id(animal))
...
>>>
change_local()
inside change_local: wombat 4330406160
以上这2段都是书上的代码,第一段代码会报错,可是第二段同样是在函数中使用了一个同名的变量,并给其附了值,第一段也是在函数内使用了同名变量,改变值。我看不出这2段代码有什么不同,可是为什么一段会报错,而另一段不会报错?求大神解析解析