2017-08-05 80 views
1

所以在写一些模块的程序 内使用,但使用i中的模块的前内定义变量时遇到的困难:如何访问在模块内部定义的变量?

a.py

def func(): 
    #do something to set the variable var 
    var = randomValue 

b.py

from a import func 
func() 
#how do i get var 

我将var设置为全局,但仍未定义var。

所有这些答案看起来不错,但没有任何主题为我的脚本工作。因此,这里的模块,也许你能告诉我怎么去time_converted到另一个脚本:

from ib.opt import Connection, message 
import time 
import datetime 

list_time = [] 
global time_converted 
def reply_handler(msg): 
    if msg.typeName == "currentTime": 
     time = msg.time 
     list_time.append(time) 
     time_converted = (datetime.datetime.fromtimestamp(int("%s"% time 
                  )).strftime('%Y-%m-%d %H:%M:%S')) 
     return time_converted 



def GetTime(): 
    conn = Connection.create(port=7496, clientId=100) 
    conn.registerAll(reply_handler) 
    conn.connect() 
    conn.reqCurrentTime() 
    while True: 
     if len(list_time) == 0: 
      pass 
     elif len(list_time) == 1: 
      break 
      conn.disconnect() 
+3

除非你定义''的外FUNC var'()'或返回它,你不能 –

+0

“所有这些答案看起来不错,但没有一个主题适用于我的脚本“究竟发生了什么问题?你有错误信息吗?你有错误的价值吗?请具体说明。 – Xukrao

+0

我只是得到“none”而不是任何值 – TB1

回答

2

a.py

from random import random 

def func(): 
    var = random() 
    return var 

x = func() 

b.py

from a import func,x 

print (func(), x) 

从执行b.py输出:

0.2927063452485641 0.8207727588707955 

编辑,响应于修改的问题

reply_handler本身收到回调来处理它使用另一个回调到它的结果报告给代码的时间。

使用一个回调函数..

1.py

from main import receiver 

def GetTime(): 
    reply_handler('this is the time') 

def reply_handler(msg): 
    receiver(msg) 

GetTime() 

main.py

def receiver(message): 
    print (message) 

输出:

this is the time 
+0

我对它的工作对我来说,但是当我试着用脚本我只是把它给了我“没有,没有” – TB1

+0

请参阅编辑。 –

+0

你可以考虑这个选择。 –

2

你定义一个函数内部的变量。要使该变量的值在函数外部可用,您需要使用return语句。举个例子:

a.py

def func(): 
    # do something to set the variable `var` 
    var = 10 

    return var 

b.py

from a import func 

# to get var 
var = func() 
print('The value of var is:', var) 

有关的功能和return语句更多解释见here

+0

好吧,让我们说,在a.py var =“10”里面如何在b.py中打印10。当我打印var时,它只是给我None。 – TB1

+0

@TarikBlaoui尝试运行刚刚更新的代码示例。 – Xukrao

+0

好吧我要去适应它到我的脚本,并看到 – TB1

0

所以这就是我应该这样做的:

GetPrice。PY

from ib.opt import Connection, message 
import datetime 

    list_time = [] 
    def reply_handler(msg): 
     if msg.typeName == "currentTime": 
      time = msg.time 
      list_time.append(time) 
      global time_converted 
      time_converted = (datetime.datetime.fromtimestamp(int("%s"% time 
                   )).strftime('%Y-%m-%d %H:%M:%S')) 


    def GetTime(): 
     conn = Connection.create(port=7496, clientId=100) 
     conn.registerAll(reply_handler) 
     conn.connect() 
     conn.reqCurrentTime() 
     while True: 
      if len(list_time) == 0: 
       pass 
      elif len(list_time) == 1: 
       break 
       conn.disconnect() 

     return time_converted 

Main.py

from GetRealtime import GetTime 

x = str(GetTime()) 
print (x) 

感谢您的帮助球员

相关问题