跟我读python3文档:007_使用python解释器(2.Using the Python Interpreter)中

贯穿始终的理念:别废话,就是干!


往期回顾

  • 有特殊作用的注释代码
 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
  • python的启动与退出
python3
exit( )
quit( )
ctrl + D
  • EOF

文档解读

python3文档第二小节链接地址:2. Using the Python Interpreter

本章主要讲解2.1.1. Argument Passing(参数传递)这一小节


段落截取(一):

When known to the interpreter, the script name and additional arguments thereafter are turned into a list of strings and assigned to the argv variable in the sys module. You can access this list by executing import sys.

名词解释

  1. script name
    中文翻译为:脚本名称。
    也就是我们自己写的小程序的名字。
  2. additional arguments
    中文翻译为:额外参数。或者是其他参数。
    这个对于初学编程的小伙伴可能有些困难。我试着讲解一下。
    我们以现实中的计算器来举例说明:计算器,英文calculator,我们用cal这个简写代替冗长的单词。
    我们打开cal,然后输入1 + 2,按下等号,得到结果3。
    那么这个过程换到命令行里会是什么样子呢?
    可能是这样书写:
cal 1 + 2

按下回车得到结果。后来,你觉得这样写不够简便,改成了:

cal 1 2

但是这样写的话,这个小程序的功能太单一了。你想让他能计算两位数的加法、减法、乘法、除法。

  • 加法:英文add,我们用a表示。
  • 减法:英文subtraction,我们用s表示。
  • 乘法:英文multiplicative,我们用m表示。
  • 除法:英文division,我们用d表示。
    于是,计算1+2就变成了下面的写法:
cal a 1 2

那么计算2-1就变成了:

cal s 2 1

依次类推,但是,这只是计算数字的情况,以后我们可能还会遇到一些需要输入字母来计算的情况,比如计算a + b(先不要管结果是什么)
我能可能会这样写:

cal a a b

如果我们的程序再复杂一些,比如可以计算多个数的加法。
那么,计算a+a+a+b+b可能就要写成:

cal a a a a b b

我们会发现,我们很难区分哪个表示运算符,哪个表示加数。
为了区分他们,人们就规定,表示功能的符号前,加上一个横杠“-”来表示。
所以,上面的式子就变成了:

cal -a a a a b b

那么这个就是我们在命令行调用程序常见的形式了。一般会概括为如下形式:

command  [-options]  parameter1  parameter2  ....

说了这么多,大家应该能明白了吧。那个command就是script name(脚本名称),它后边的那些就是additional arguments(额外参数)了。
注:上面的[-options],方括号表示可选。详细内容请看本期拓展。

  1. a list of strings
    中文翻译为:字符串列表。
    要理解字符串列表,就要先理解列表。
    列表是用方括号括起来的一堆有序数据。形式如下:[ 2, 3, 11, 1, 23, 5 ]。
    有序是什么意思呢?就是数据是排好队的,不过,他们的序号是从0开始的。
    0号数据就是2 。
    4号数据就是23 。
    我们可以形象的把列表比做一栋大楼。大楼每层装着一个数据。那么第0层装着数据2,第4层装着数据23 。我们还可以给这栋大楼命名,比如就叫咖喱py吧。
    命名形式如下:
    咖喱py = [ 2, 3, 11, 1, 23, 5 ]
    那么怎么指定查看具体哪层的数据呢?
    比如我想看4层有什么。
    咖喱py[ 4 ]
    0层有什么?
    咖喱py[ 0 ]

那么字符串列表是什么呢?
就是里面装的都是用引号括起来的东西。
形式如下:[ ' b ', ' abd ', ' 32 ', ' a3f ', 'galipy' ] 。
我们要明白一点,用引号括起来后,这些字母、数字就变成了一个图形符号,不再具有他们原本的意思。举例来说就是,‘32’与32不是同一个东西,你可以理解为,一个是一幅画,一个是数字。画与画之间是不能进行数学运算的。但是可以摆在一起观看、欣赏,还可以摆成各种造型。

  1. argv variable
    中文翻译为:argv变量。这里的argv应该是arguments variant vector的缩写。就是参数变量的意思。
    这里的argv其实就是相当于给一栋大楼命名为:argv。
    为什么叫变量呢?因为大楼每层的数据都是可以改变的。
  1. sys module
    中文翻译为:sys模块。
    其实就是别人写好的sys.py 文件。
  2. import sys
    中文翻译为:导入sys模块。
    这个就不用讲了吧,之前我们在《003_python快速认知》就说过了。
    其实就是借用别人写好的sys.py文件。

段落大意

当我们在命令行启动脚本后,脚本名称和额外参数会被传递给sys模块的argv列表里。

这句话什么意思呢?其实就是sys模块里,有一个argv列表,这个列表长成下面的样子:
['脚本名',‘参数’,‘参数’,.....]
举例来说:
我们在命令行启动一个名为test的脚本文件,输入如下内容:

$ test abc c3 galipy  # $是命令行提示符,这个符号不用输入。以后不再提示。

那么sys模块里的argv列表长什么样子呢?
['test', 'abc', 'c3', 'galipy' ]

这里呢,要额外讲解下如何调用别人模块里的东西。
我们就拿sys模块的argv列表举例。
想要调用argv列表的0号数据,需要按如下方式书写:
sys.argv[ 0 ]
这样,他就会返回‘test’这个字符串。
输入sys.argv[ 1 ]
就会得到‘abc’这个字符串。
以此类推。


本期拓展

巴克斯范式
英文:Backus Normal Form
缩写为BNF
BNF范式是一种表示计算机语言定义规范的规则。
常见如下符号:

  1. ::= 表示定义;
  2. “ ” 双引号里的内容表示字符;
  3. < > 尖括号里的内容表示必选内容;
  4. [ ] 方括号里的内容表示可选内容;
  5. | 竖线两边的内容选择其中一个,相当于or;

还记得我们说的命令行常见形式吗?

command  [-options]  parameter1  parameter2  ....

现在明白[-options]表示什么意思了吧。

本期记忆点

  • import sys
  • sys.argv[ 0 ]

请背诵并且练习本期的记忆点。你以后会经常用到他们的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容