【发布时间】:2021-09-23 18:45:51
【问题描述】:
这里是代码。 2个功能。
def get_domains(self): #returns test@test.com, test2@test.com etc in json.
if self.domain_names == None:
r = requests.get(GET_DOMAINS_URL)
if r.status_code != 200:
raise ValueError("Can't get domains")
self.domain_names = [item["name"] for item in r.json()]
return self.domain_names
def is_valid_email(self, email):
return email[email.find("@")+1:] in self.get_domains()
那么函数 is_valid_email 中的“+1:”部分是什么?它是如何工作的?
【问题讨论】:
-
是邮件中
@之后字符的索引。所以它是域名的开头。 -
所以如果
email是foo@gmail.com,切片提取gmail.com -
find返回@的索引。如果您刚刚执行email[email.find("@"):],则切片将包含“@”。所以,“@example.com”。加1,得到@后面的域名,“example.com”。 -
这段代码也有问题,因为 str.find 如果未找到子字符串则返回 -1,然后从字符串开头的切片添加 1。
标签: python string return slice one-liner