我在nltk文档(http://www.nltk.org/_modules/nltk/sentiment/vader.html)
中找到了这段代码if (i < len(words_and_emoticons) - 1 and item.lower() == "kind" and \
words_and_emoticons[i+1].lower() == "of") or \
item.lower() in BOOSTER_DICT:
sentiments.append(valence)
continue
有人可以解释这个if条件的含义吗?
答案 0 :(得分:6)
一行末尾的反斜杠告诉Python将当前的逻辑行扩展到下一个物理行。请参阅Python参考文档的Line Structure section:
2.1.5。显式连接线
可以使用两条或更多条物理线连接成逻辑线 反斜杠字符(
\
),如下所示:当物理行以a结尾时 反斜杠不是字符串文字或注释的一部分,它是 加入以下形成单个逻辑行,删除 反斜杠和下面的行尾字符。例如:if 1900 < year < 2100 and 1 <= month <= 12 \ and 1 <= day <= 31 and 0 <= hour < 24 \ and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date return 1
还可以选择使用隐式行连接,使用括号或括号或花括号; Python不会结束逻辑行,直到找到每个左括号或括号的匹配右括号或括号。这是推荐的代码样式,您找到的样本应该写为:
if ((i < len(words_and_emoticons) - 1 and item.lower() == "kind" and
words_and_emoticons[i+1].lower() == "of") or
item.lower() in BOOSTER_DICT):
sentiments.append(valence)
continue
请参阅Python Style Guide (PEP 8)(但请注意例外;某些Python语句不支持(...)
括号,因此可以接受反斜杠。
请注意,Python不是唯一使用反斜杠进行行继续的编程语言; bash,C和C ++预处理器语法,Falcon,Mathematica和Ruby也使用这种语法扩展行;见Wikipedia。
答案 1 :(得分:0)
它用作换行符,因此可以在下一行写入if
条件。
答案 2 :(得分:0)
反斜杠用于表示此if
条件中的换行符。 PEP8说:
反斜杠有时可能仍然合适。例如,long,multiple with -statements不能使用隐式延续,因此可以接受反斜杠:
with open('/path/to/some/file/you/want/to/read') as file_1, \ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read())
除了这些条件之外,通常还会通过适当的缩进来表示换行符。
显然,with
语句是一个例外,它不允许仅通过缩进换行,因此使用反斜杠,而if
不应与\
一起使用。
答案 3 :(得分:0)
在这种情况下,\
将转义以下新行字符。因为Python关心空格,所以这段代码使用它来允许代码在新行上继续。
答案 4 :(得分:0)
为了便于阅读,它逃脱了行尾。 (将行扩展到下一行,因为\ n字符不可见,但它具有语法含义。)