2015-08-14 60 views
0

我有一个名为myGlobal.py的python文件,在这个文件中我把count声明为一个全局变量。计数值不增加

import datetime 
import time 
import os 

count = 0 
failCount = 0 

def counterstart: 
    global count 
    count +=1 

我在另一个文件中调用此计数器。所以每次我调用一个函数的时候,我希望通过计数器1,增加该文件是scripts.py

import os 
from selenium import webdriver 
import datetime 
import time 
from myGlobal import * 

def main(): 
    fnfirst() 
    fnsecond() 
    fnthird() 

def fnfirst(): 
    global count 
    print count 

def fnsecond(): 
    global count 
    print count 

def fnthird(): 
    global count 
    print count 

main() 

但每当我跑script.py,计数显示为只有0。

这是怎么发生的?

+2

您有两个*不同*'计数',因为每个模块都有自己的'全局'。 – jonrsharpe

+2

'来自foo import *'不是很好的做法,更好地使用'import foo'然后'foo.count'。这可能也会解决你的问题。 –

+0

我宁愿使用一个单例来存储全局变量,所以你不必继续使用'全局var'语法无处不在 – muddyfish

回答

0
import myGlobal 

print myGlobal.count # 0 
myGlobal.count += 1 

def foo(): 
    myGlobal.count += 1 

foo() 
print myGlobal.count # 2 

所以这里是一个基于Python的装饰解决方案。它会计算特定功能的呼叫次数:

# File script.py 

import myGlobal 

def count_call(func): 
    def _wrapper(*args, **kwargs): 
     myGlobal.count += 1 
     func(*args, **kwargs) 
    return _wrapper 

@count_call 
def fnfirst(): 
    pass # do something 

@count_call 
def fnsecond(): 
    pass # do something 

def main(): 
    print myGlobal.count # 0 
    fnfirst() 
    print myGlobal.count # 1 
    fnsecond() 
    print myGlobal.count # 2 
    fnfirst() 
    print myGlobal.count # 3 

if __name__ == "__main__": 
    main() 
+1

no在scripts.py中每个都是一个独立的函数,我不想再次调用它。每当我添加一个新函数并调用全局计数时,它应该增加1.因此,如果5个函数,当我添加第6个函数和调用计数时,它应该打印6.但不工作:-( –

+0

Eddited。是你正在寻找? – FunkySayu

+0

@harimadhav你在这里说'count'应该计算函数的数量或函数被调用的次数吗? – SuperBiasedMan