g****t 发帖数: 31659 | 1 numpy大的数组放在函数内初始化好,
还是直接全局变量好?纯以速度而论的话?
我基本遵从如下模糊认识:
更早 告诉解释器/编译器 更多的信息,速度会快一些。
这样对不对? |
w********m 发帖数: 1137 | |
g****t 发帖数: 31659 | 3 You are right and I just verified by using a single function.
The theory is:
Local namespace is checked first. Then global and then
system build in namespace.
Thanks !
【在 w********m 的大作中提到】 : global variable应该更慢吧
|
w********m 发帖数: 1137 | 4 个人感觉,function上面加一层class,对python还是很有必要的。 |
g****t 发帖数: 31659 | 5 Get thing done就可以吧。
: 个人感觉,function上面加一层class,对python还是很有必要的。
【在 w********m 的大作中提到】 : 个人感觉,function上面加一层class,对python还是很有必要的。
|
c*********e 发帖数: 16335 | 6 全局变量 乱用的话,会更慢。
【在 g****t 的大作中提到】 : numpy大的数组放在函数内初始化好, : 还是直接全局变量好?纯以速度而论的话? : 我基本遵从如下模糊认识: : 更早 告诉解释器/编译器 更多的信息,速度会快一些。 : 这样对不对?
|
L***s 发帖数: 1148 | 7 LEGB scoping rule
具体实践上,可以在 local 再引用一次 global
比如标准库里的小顶堆实现里的几句:
https://hg.python.org/cpython/file/2.7/Lib/heapq.py#l215
_heappushpop = heappushpop
for elem in it:
_heappushpop(result, elem)
这里 heappushpop 是另外一个函数,在 global scope
如果直接放 for 循环里,每次都得先 lookup local scope,
再查 enclosed 和 global scope,就慢了。
所以在 local scope 里用 _heappushpop 来引用 global scope 的对象
for elem in it:
heappushpop(result, elem)
【在 g****t 的大作中提到】 : You are right and I just verified by using a single function. : The theory is: : Local namespace is checked first. Then global and then : system build in namespace. : Thanks !
|
g****t 发帖数: 31659 | 8 杩欎釜鍔炴硶涓嶉敊馃憤
璋㈣阿鎸囩偣
銆鍦Leiss(寰曞徃) 鐨勫ぇ浣滀腑鎻愬埌: 銆br />
: LEGB scoping rule
: 鍏蜂綋瀹炶返涓婏紝鍙互鍦local 鍐嶅紩鐢ㄤ竴娆global
: 姣斿鏍囧噯搴撻噷鐨勫皬椤跺爢瀹炵幇閲岀殑鍑犲彞锛br />
: https://hg.
python.org/cpython/file/2.7/Lib/heapq.py#l215
: _heappushpop = heappushpop
: for elem in it:
: _heappushpop(result, elem)
: 杩欓噷 heappushpop 鏄彟澶栦竴涓嚱鏁帮紝鍦global scope
: 濡傛灉鐩存帴鏀for 寰幆閲岋紝姣忔閮藉緱鍏lookup local scope锛br />
: 鍐嶆煡 enclosed 鍜global scope锛屽氨鎱簡銆br />
|