python中函数定义的语法错误,该函数似乎有效
当我在此代码中定义函数时:python中函数定义的语法错误,该函数似乎有效,python,sh,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.cl
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()
它在我的控制台中返回此错误消息:
./palindrome.py: line 1: syntax error near unexpected token `('
./palindrome.py: line 1: `def is_palindrome(seq):'
我不知道这里出了什么问题。缩进
def is_palindrome(seq):
s=seq[::-1]
if s==seq:
return True
else:
return False
您正在以*sh脚本的形式执行脚本。您应该执行
python palindrome.py
实际上,您收到的错误消息通常是*sh script。。。当您通过/palindrome.py
调用脚本时,它将使用匹配的第一个解释器执行脚本。这里似乎是一个*sh解释器,来自您的Linux环境
为了避免这种情况,最好的方法是添加#/usr/bin/env python
位于python脚本的第一行,这将强制命令行使用python解释器而不是*sh解释器
注:*这里的sh代表sh的任何派生词:bash、zsh等。是的,我的代码是这样的,对不起,我第一次写主题时,我不知道如何设置段落的格式:)您发布的代码是错误的,您试图告诉的内容不是很清楚。可能是因为作者第一次忘记将代码放入“代码块”中。对这类问题要小心,这是很常见的。或者加上
#/usr/bin/env python
作为第一行。这将告诉shell使用哪个解释器。注意env
版本是首选的,因为它可以与多个Python版本、virtualenv等一起使用。如果您以解释器的方式将文件传递给Python,则不需要/
,使用./是正确的做法。否则,如果它们共享相同的名称,则可能会意外运行系统命令。考虑一个名为“test”的脚本。code>/test会做正确的事情,而test
不会。另外,“.”并不总是在用户的路径上
@seanpery:实际上,我相信他指的是python./test
vspython test
的形式。在这种情况下,您不需要/
,因为shell根本不会尝试直接执行测试
,它将作为一个参数传递给Python。我绝对建议使用hashbang。这样,用户可以选择是使用/
还是使用python
调用。