7-ELEVEn中的“n”为啥要小写?❤️答案匪夷所思!最后却引出一个...

【引言】Seven-Eleven(logo:7-ELEVEn),已成为便利商店的国际共通语言,商店遍布美国、日本、中国大陆、新加坡、台湾、马来西亚、菲律宾、瑞典、墨西哥、巴拿马、挪威、加拿大、澳大利亚、印尼等国家和地区。目前全球店面数目逾三万家,为全球最大连锁店体系。

7-ELEVEn中的“n”为啥要小写?❤️答案匪夷所思!最后却引出一个..._第1张图片

那么,问题来了:你有没有关注到这样一个问题: 

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 "", line 1, in 
    import pil
ModuleNotFoundError: No module named 'pil'
>>> import pyqt5
Traceback (most recent call last):
  File "", line 1, in 
    import pyqt5
ModuleNotFoundError: No module named 'pyqt5'
>>> import cprofile
Traceback (most recent call last):
  File "", line 1, in 
    import cprofile
ModuleNotFoundError: No module named 'cprofile'
>>>
>>> import os, sys, math
>>> import OS
Traceback (most recent call last):
  File "", line 1, in 
    import OS
ModuleNotFoundError: No module named 'OS'
>>> import Sys
Traceback (most recent call last):
  File "", line 1, in 
    import Sys
ModuleNotFoundError: No module named 'Sys'
>>> import Math
Traceback (most recent call last):
  File "", line 1, in 
    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

>>> 

5.模块中定义的常量多数为全大写

比如:

>>> import re
>>> re.IGNORECASE
re.IGNORECASE
>>> re.ASCII
re.ASCII
>>> re.UNICODE
re.UNICODE
>>> re.MULTILINE
re.MULTILINE
>>> 

6. 爬虫实例中的大小写

在分析爬取出的网页中,“变量名以及变量读取出的变量值”,还有“网址中的参数”等等都要考虑到字母大小写问题,以下是我在练习做爬虫中碰到的实例,一不小心出过好多bug:

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标志

Python中还有哪些大小写问题需要特别关注的?有想到的请留言补充—— 

你可能感兴趣的:(Python,#,Python,学习笔记,python)