python在def()内部调用def()

时间:2018-07-29 15:53:05

标签: python function

我正在为我的python助手打包,发现一个问题。

我将以下程序导入主脚本。

import os

def load() :
    def tts(name) :
        os.system("""PowerShell -Command "Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak(' """ + name + " ');"

我如何在程序中调用该函数

我尝试过:

import loadfile
loadfile.load().tts("petar")

它不起作用

3 个答案:

答案 0 :(得分:1)

您永远都不应公开子功能超出其范围,在这种情况下,tts方法不在load之外。实际上,访问tts而不将其引用暴露在您的load()方法之外是不可能的。我建议您宁愿使用这样的类:

loadfile.py中:

import os

class LoadFile(object):
    def tts(self, name):
        os.system("""PowerShell -Command "Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak(' """ + name + " ');")

def load():
    return LoadFile()

在主要代码上: import loadfile loadfile.load().tts("petar")

答案 1 :(得分:0)

运行MyComponent时,它等效于:

loadfile.load().tts("petar")

您的方法v = loadfile.load() v.tts("petar") 不返回任何值,因此为loadfile.load()分配了v。然后尝试对None调用tts(),这是一个错误。

您为什么要尝试这样做?也许您想创建一个类?

答案 2 :(得分:0)

您可以按照以下代码在def内调用def

def num1(x):
   def num2(y):
      return x * y
   return num2
res = num1(10)

print(res(5))

Reference URL