我正在为我的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")
它不起作用
答案 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))