问题描述
- 关于python语法的一些问题
- 1.python生成器,以下是书上的一个例子:
>>>def my_range(first=0last=10step=1): ... number=first; ... while number<last: ... yield number ... number+=step ...
调用这个函数:
>>>range=my_range(15) >>>for x in ranger: ... print(x) ...
这里我就想问问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:'animalid(animal)) ... >>> change_local() inside change_local: wombat 4330406160
以上这2段都是书上的代码,第一段代码会报错,可是第二段同样是在函数中使用了一个同名的变量,并给其附了值,第一段也是在函数内使用了同名变量,改变值。我看不出这2段代码有什么不同,可是为什么一段会报错,而另一段不会报错?求大神解析解析
解决方案
这就是yield的特殊 它会返回数据 同时保存函数栈其它数据 下次调用的时候会直接从yield开始继续计算
解决方案二:
Python sqlite的一些问题
python开发的一些问题
python 中database的一些问题
时间: 2024-11-10 08:00:23