python - python 在 def() 内部调用 def()
问题描述
我正在为我的 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")
它没有用
解决方案
您永远不应该在其范围之外公开子功能,在这种情况下,就是tts
方法 outside 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")
推荐阅读
- elasticsearch - 从特定日志开始的时间范围的 DSL 查询
- node.js - npm install 无法安装依赖
- node.js - 如何使用护照身份验证和护照本地包在nodejs中添加“更改密码”功能?
- powerbi - 如何将我的某些行分组到 Power BI 中的新标题中?
- react-native - 使用 react-navigation 隐藏 url 中的路由参数
- javascript - 在 Babylon JS 中使用 javascript 进行 CheckCollision
- python - 使用 PyInstaller 将 .py 和 .txt 文件封装成 .exe 文件
- python - 使用 raspberrypi 安装和导入 ssh 隧道库
- .net - 如何停止 .NET Telemetry 以停止在 Ubuntu Linux 中收集数据
- android - Uno Platform: R.java invalid symbol name