首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python在def()内部调用def()

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

Stack Overflow用户
提问于 2018-07-29 23:53:05
回答 3查看 10.3K关注 0票数 0

我正在为我的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")

但它并没有起作用

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-30 06:13:02

您永远不应该在子函数的作用域之外公开它,在本例中是在load之外的tts方法。实际上,如果不在load()方法外部公开引用,就不可能访问tts。我建议您使用这样的类:

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")

票数 5
EN

Stack Overflow用户

发布于 2018-07-30 00:11:12

当您运行loadfile.load().tts("petar")时,它等同于:

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

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

你为什么要这么做呢?也许你想创建一个类?

票数 1
EN

Stack Overflow用户

发布于 2019-09-03 13:28:21

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

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

print(res(5))

Reference URL

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51582040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档