python中函数定义的语法错误似乎有效

Ita*_*sie 5 python sh

当我在这段代码中定义一个函数时:

def is_palindrome(seq):
    s=seq[::-1]
    if s==seq:
         return True
    else:
         return False

myfile=open('palindrome.txt','r')
for line in myfile:
    if is_palindrome(line.srtrip()):
        print(line,end='')
myfile.close()
Run Code Online (Sandbox Code Playgroud)

它在我的控制台中返回此错误消息:

./palindrome.py: line 1: syntax error near unexpected token `('
./palindrome.py: line 1: `def is_palindrome(seq):'
Run Code Online (Sandbox Code Playgroud)

我不知道这里有什么问题.

Max*_*ant 13

您正在将脚本作为*sh脚本执行.你应该做python palindrome.py

实际上,您获得的错误消息通常是*sh脚本的错误...当您通过调用脚本时./palindrome.py,它会使用匹配的第一个解释器执行它.从你的Linux环境来看,它似乎是一个*sh解释器.

为了避免这种情况,最好的方法#!/usr/bin/env python在Python脚本的第一行添加,这将强制命令行使用Python解释器而不是*sh解释器.

注意:*sh表示sh:bash,zsh等的任何派生词.

  • 或者添加`#!/ usr/bin/env python`作为第一行.这将告诉shell使用哪个解释器.注意`env`版本是首选,因为它适用于多个Python版本,virtualenv等. (5认同)
  • 我绝对推荐使用hashbang.这样,用户可以*选择*是否使用`./`或使用`python`调用. (3认同)

mch*_*rnc 0

缩进?

def is_palindrome(seq):
    s=seq[::-1]
    if s==seq:
        return True
   else:
        return False
Run Code Online (Sandbox Code Playgroud)