Python any()测试中的SyntaxError

Python any()测试中的SyntaxError,python,python-3.x,syntax-error,any,or-operator,Python,Python 3.x,Syntax Error,Any,Or Operator,我对python语法非常陌生。。。在这种情况下,如何使用或运算符 为了检查文件是否以“.txt”或“.sm3dump”结尾,我尝试使用any(),但出现了一个语法错误: if any(filename.endswith('.txt'), filename.endswith('.sm3dump')) ^ SyntaxError: invalid syntax 我做错了什么

我对python语法非常陌生。。。在这种情况下,如何使用
运算符

为了检查文件是否以“.txt”或“.sm3dump”结尾,我尝试使用
any()
,但出现了一个语法错误:

if any(filename.endswith('.txt'), filename.endswith('.sm3dump'))
                                                               ^
SyntaxError: invalid syntax
我做错了什么?

您用两个参数打电话:

any(filename.endswith('.txt'), filename.endswith('.sm3dump'))
#   <----- argument #1 ----->  <------- argument #2 ------->
使用
any()
执行多个类似测试时,一个常见的习惯用法是使用or:

无论使用哪种测试,都需要记住用冒号结束
if
语句:

if filename.endswith(('.txt', '.sm3dump')):
    # do something ...

对于或运算符,只需键入
。如果
,请在
末尾添加一个
如果filename.endswith('.txt')或filename.endswith('.sm3dump'):
您可以使用google快速找到这一点……Eric:要发现Zero答案的最后一部分,请在交互式提示下使用
帮助
,快速检查函数和类的签名和使用情况。特别是,
>>帮助(str.endswith)
以“后缀也可以是要尝试的字符串元组”结尾。
filename.endswith('.txt') or filename.endswith('.sm3dump')
any([filename.endswith(ext) for ext in ('.txt', '.sm3dump')])
#   <----------------- list comprehension ----------------->
any(filename.endswith(ext) for ext in ('.txt', '.sm3dump'))
#   <-------- generator expression (no brackets) -------->
filename.endswith(('.txt', '.sm3dump'))
if filename.endswith(('.txt', '.sm3dump')):
    # do something ...