【问题标题】:Problem with function in pythonpython中的函数问题
【发布时间】:2010-12-02 01:24:15
【问题描述】:

我是python的新手。我正在尝试编写一个非常基本的函数但出现错误。我不知道背后的原因。示例代码:

def printme( str ):
    print str;
    return;

printme("My string");

这应该在逻辑上执行,但它给了我以下错误:

Traceback(最近一次调用最后一次): “模块”中的文件“stdin”,第 1 行
NameError: name 'printme' 未定义

欢迎提出任何建议...

【问题讨论】:

  • Python 中不需要分号。
  • 那是您的代码的准确复制和粘贴吗?返回时它给了我一个缩进错误;
  • 是直接复制/粘贴吗? return 行未与 print 对齐
  • 不要命名变量str,它是一个内置类型的名称,覆盖它是个坏主意。
  • 不,不是完全复制粘贴

标签: python


【解决方案1】:

分号不应该和 return 语句一样存在(函数的执行在最后一个缩进的语句处结束)。

不完全确定缩进的格式,但 python 依赖于它来确定范围

def printme(str):
    print str #This line is indented, 
              #that shows python it is an instruction in printme

printme("My string") #This line is not indented. 
                     #printme's definition ends before this

正确执行

python syntax 上的维基百科页面涵盖了缩进规则。

【讨论】:

  • @ricky:由于 Python 不使用大括号作为范围,因此您需要采用一致的方式来缩进块。每次都使用制表符或相同数量的空格,否则 Python 会混淆语句属于哪个块。
  • 我澄清了关于分号和缩进的意思。如果部分内容还不清楚,请告诉我。
【解决方案2】:

关注python style guide (pep8) 可能会有所帮助。您不必这样做,但这将有助于避免缩进错误,并且易于阅读其他人的代码。

【讨论】:

    【解决方案3】:

    由于您的缩进错误,它不起作用。您的函数从未编译,因此它不存在。

    (原始问题已被编辑为“正确格式”)

    【讨论】:

      【解决方案4】:

      试试cp这个:

      def printme(str):
          print str
      
      printme("My string")
      

      【讨论】:

        猜你喜欢
        • 2021-10-07
        • 2016-04-28
        • 1970-01-01
        • 2012-09-20
        • 2021-03-17
        • 2019-07-06
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多