为什么返回不能在`if __name__ ==" __ main __"`中执行

时间:2016-03-27 05:36:04

标签: python python-2.7

我正在编写一个程序,我需要程序返回一个整数说changed来提醒控制器有一些变化。但是当我想要返回这个值时,我一直收到这条消息:

 return 1
 SyntaxError: 'return' outside function

我在线阅读了一些帖子,他们都说这是缩进问题,但我确信我的缩进是正确的,因为我尝试过这么简单的程序,但失败仍然存在。

# -*- coding: utf-8 -*-


if __name__ == "__main__":
     return 1

这是错误消息:

runfile('/home/iphyer/untitled1.py', wdir='/home/iphyer')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/local/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 699, in runfile
 execfile(filename, namespace)
  File "/usr/local/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 81, in execfile
builtins.execfile(filename, *where)
  File "/home/iphyer/untitled1.py", line 9
   return 1
  SyntaxError: 'return' outside function

虽然我的真实程序比这更复杂,但结构是一样的。

我很困惑,因为如果我评论return语句,所有程序都可以在没有任何警告的情况下运行。

这令人困惑。我想我无法使用if __name__ == "__main__ return某些值?

谢谢!〜

2 个答案:

答案 0 :(得分:5)

当有问题的文件作为独立程序运行时,<?php $dbhost = 'localhost'; $dbuser = 'Krishna'; $dbpass = 'xxxx'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass); session_start(); if (isset($_POST['submit'])){ if(! $conn ) { die('Could not connect: ' . mysqli_error()); } } mysqli_select_db($conn, "krishna"); $sql = "INSERT INTO contact_us (name, email, sub, mess) VALUES ('$_POST[name]','$_POST[email]','$_POST[sub]','$_POST[mess]')"; if(! $sql) { die('Error: ' . mysqli_error()); } echo "1 Record Added to Table\n"; echo "<a href='contactForm.html'>Back to main page</a>"; mysqli_close($conn); ?> 的主体会执行。在这种情况下,您可能需要的是if __name__ == "__main__":exit(),它允许您将有限的信息返回到调用此脚本的脚本。通常,您可以使用sys.exit()表示成功,也可以使用非零结果(限制为1 - 255)表示可能的失败。 exit(0)用于子程序/函数,return用于程序。

答案 1 :(得分:3)

因为if statement不是一种方法。您只能在Python中return public static void createAudioFile(String text, String fileName) { AudioPlayer audioPlayer = null; System.setProperty("mbrola.base", Constants.mbrolaDiskPath); Voice voice; VoiceManager vm = VoiceManager.getInstance(); voice = vm.getVoice("mbrola_us1"); //voice = vm.getVoice("kevin16"); voice.allocate(); try{ String directoryPath = audioDir+fileName; audioPlayer = new SingleFileAudioPlayer(directoryPath,Type.WAVE); voice.setAudioPlayer(audioPlayer); **voice.speak(text);** voice.deallocate(); audioPlayer.close(); } catch(Exception e){ e.printStackTrace(); } }