在面向对象编程方面,我对python的思考相对较新,而且对我而言相对较慢.
是否可以在具有多个函数的类之间传递全局变量?我在这里和其他来源广泛阅读了他们,但我仍然有点困惑.
我的最终目标是全局定义一个变量,在一个类的函数中为它赋值,然后在另一个类的函数中使用它.那可能吗?我正在为ArcMap构建一个pythonaddin,它需要每个按钮一个类.我想要一个按钮来为变量赋值,然后在脚本中的另一个类中使用该变量.
(在我得到高手之前,我知道首先使用全局变量是一种相对糟糕的形式,我正在努力学习)
例如,作为一个高度简化的例子:
x = []
class A():
def func_1(self):
#populate the x variable
global x
x = 1
class B():
def func_2(self):
global x
#do stuff with x
Run Code Online (Sandbox Code Playgroud)
这是否可以接受(即使不是pythonic)?
我有一个numpy脚本坐在一个应用服务器上,它被调用数千次,一次在蓝色的月亮我得到一个运行时警告:
/usr/local/lib/python2.7/dist-packages/scipy/stats/stats.py:2417: RuntimeWarning: invalid value encountered in double_scalars
r = (r_num / r_den)
Run Code Online (Sandbox Code Playgroud)
但是我再也不确定我是否正在寻找合适的地方,因为这种转变的可能性不到1%
如何让python打印出警告的位置?
这是procstat输出的安全性:
PID START END PRT RES PRES REF SHD FL TP PATH
36502 0x400000 0x45d000 r-x 77 0 23 11 CN vn /usr/local/sbin/httpd
36502 0x65c000 0x660000 rw- 3 3 2 1 CN vn /usr/local/sbin/httpd
36502 0x660000 0x800000 rw- 5 4 2 1 CN sw
36502 0x80065c000 0x800693000 r-x 25 0 83 32 CN vn /libexec/ld-elf.so.1
Run Code Online (Sandbox Code Playgroud)
RES(驻留页面)和PRES(私有驻留页面)之间的主要区别是什么?与共享和私有内存有关吗?
并且有一个所谓的映射标志(CN)。据我了解,这些标志适用于每页基础知识,而不适用于整个内存段,因为标记为“写时复制”而不是段的页面。那么为什么procstat在整个段中显示它?
另一个问题是- 我可以从此输出中算出(写时复制过程中)真正复制了多少页面,父过程中还剩下多少页面?
请,你能帮忙弄清楚所有这些东西吗?我将非常感谢,谢谢
我知道对数字列表求和的最快方法是使用内置函数sum。使用for循环求和可能比使用 更慢reduce。然而,当我尝试时,事实并非如此。有人可以解释这个结果吗?
import time, random, operator
sample = [random.randrange(10000) for _ in range(1000000)]
def use_for(l):
acc = 0
for n in l:
acc += n
print acc
def use_lambda(l):
print reduce(operator.add, l)
print time.time()
use_for(l)
print time.time()
use_lambda(l)
print time.time()
Run Code Online (Sandbox Code Playgroud)
我得到的时间:
1479671513.04
4998734199
1479671513.07
4998734199
1479671513.13
Run Code Online (Sandbox Code Playgroud)