【问题标题】:create a global function in python在python中创建一个全局函数
【发布时间】:2011-04-23 01:01:20
【问题描述】:

在 python 中,我如何创建一个可以在所有被调用的类中使用的全局函数? 这是一个例子:

import configparser
import os
import sys
from datetime import datetime
from ftplib import FTP

def notify(msg):
    echo = True
    log = True
    if echo:
        print(msg)
    if log:
        f = open('log.txt','a')
        msg = datetime.now().strftime("%y-%m-%d-%H:%M:%S")+': ' + msg
        f.write(msg)
        f.close()
    #sys.exit()  #removing this was the fix!

class zoneFTP():
    def __init__(self):
        self.conn = FTP()
        self.dir = './'
        notify('The dir is :' + self.dir)

def main():
    notify('starting')
    ftp = zoneFTP()

if __name__ == "__main__":
    main()

在 zoneFTP 类中调用 notify() 失败。如何使 notify() 函数像 python 内置函数之一,以便可以在任何地方调用它?或者有没有更好的方法来做我想要在这里完成的事情?

【问题讨论】:

  • 检查您收到的错误消息。应该没有理由不能从类初始化程序调用 notify(),但未声明类名 FTP。
  • 你的 notify 调用 sys.exit(),因此 main 中对 zoneFTP() 的调用将永远无法到达。
  • @Steve 正确,上面的代码是从我正在处理的一个更大的项目中挑选出来的,我错过了那部分。我修复了代码示例。
  • @Keith 谢谢,我是 python 新手,完全忘记了我在那里。它现在工作得很好!
  • 哈哈,在随机函数中抛出 sys.exit 通常是个坏主意!

标签: python global-variables global


【解决方案1】:

notify() 放入实用程序模块中,并让所有其他模块导入它。

【讨论】:

  • 这是个好主意,当我得到更多这样的功能时,我可能会开始使用这种方法,删除 sys.exit() 解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 2012-06-26
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多