那么,问题来了:你有没有关注到这样一个问题:
7-ELEVEn 中的“n” 到底为什么要小写?
网上有很多版本的解说,以下两个版本较为“靠谱”:
1. 来自老板妻子的意见
该公司的logo更换过几次,1969年以后才是小写n。因为创始人汤普森(Joe C. Thompson)的妻子觉得全部大写有点过于生硬、呆板,于是建议把 N 换成小写会柔和、友善一些。这个说法目前是全网最令人信服的,看来“成功男人背后都有伟大女人”的叙事方式永不过时。女性视角往往是大直男所想不到的,后来证明这一调整确实比原来的顺眼多了!
2.出于“风水”的原因
这个原因听着挺扯,不过,似乎更得东方人的心。大写的 N 的最后一笔向上,意味着“(财富)出去”,即“散财”;而小写 n 的最后一笔向下,形成一个包围,意味着“聚财”。这套风水说辞,应该不是美国人想出来的,可能是某个东亚网友 YY 的吧,后来普遍得到整个东亚地区人们的认同。
答案有点匪夷所思吧!至于究竟为什么?反正我不确定,我只是想借此小故事引出一个大家都熟知的重要结论:
python是字母大小写敏感的编程语言!
具体有哪些需要关注的大小写问题:
1. 变量名
比如,Number 和 number 就是两个不同的变量:
>>> Number = 1 >>> number = 2 >>> Number, number (1, 2) >>> # 变量名可以包括字母、数字、下划线,不能以数字开头,且最好也不能用关键字。
2. 导入模块名
导入模块时,名称大部分是“全小写”的,但也有好多异类,比如PIL, PyQt5, cProfile等:
>>> import PIL, PyQt5, cProfile >>> import pil Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> import pil ModuleNotFoundError: No module named 'pil' >>> import pyqt5 Traceback (most recent call last): File "<pyshell#21>", line 1, in <module> import pyqt5 ModuleNotFoundError: No module named 'pyqt5' >>> import cprofile Traceback (most recent call last): File "<pyshell#22>", line 1, in <module> import cprofile ModuleNotFoundError: No module named 'cprofile' >>> >>> import os, sys, math >>> import OS Traceback (most recent call last): File "<pyshell#24>", line 1, in <module> import OS ModuleNotFoundError: No module named 'OS' >>> import Sys Traceback (most recent call last): File "<pyshell#25>", line 1, in <module> import Sys ModuleNotFoundError: No module named 'Sys' >>> import Math Traceback (most recent call last): File "<pyshell#26>", line 1, in <module> import Math ModuleNotFoundError: No module named 'Math' >>>
3. 关键字大部分全小写
大部分关键字都是“全小写”的,'False', 'None', 'True' 除外:
>>> import keyword >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
4. 枚举类变量一般全大写
比如:
>>> from enum import Enum >>> class Weekday(Enum): MONDAY = 0 TUESDAY = 1 WEDNESDAY = 2 THURSDAY = 3 FRIDAY = 4 SATURDAY = 5 SUNDAY = 6 >>> Weekday.SUNDAY <Weekday.SUNDAY: 6> >>>
5.模块中定义的常量多数为全大写
比如:
>>> import re >>> re.IGNORECASE re.IGNORECASE >>> re.ASCII re.ASCII >>> re.UNICODE re.UNICODE >>> re.MULTILINE re.MULTILINE >>>
6.大小写
content = ('Java','JavaScript','Python') website = 'http://*****.com/xxxx?xx=' userName = ['Abc','HannYang',......] for c in content: rank,ids = [],[] url = website + c.lower() res = requests.get(url,headers={'User-Agent':agent}).json() if res["code"] == 200: data = res["data"]['RankListItem'] rank += [r for r in data] count = 0 for i,r in enumerate(rank): if r['userName'].lower() in userName: ......
【解决方法】
1. 在字串比较时双方都用upper()或lower()
2. 或者用正则表达式时使用IGNORECASE标志