- 本教程为python3文档解读
- 本教程面向完全型小白,只要你会在电脑上打字,那你就可以看懂。
- 参考视频观看,味道更加:https://space.bilibili.com/186584185/#!/video
- 建议优先阅读本系列的《编程的本质》这一章节。
贯穿始终的理念:别废话,就是干!
往期回顾:
- 有特殊作用的注释代码
#!/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.
名词解释
-
script name
中文翻译为:脚本名称。
也就是我们自己写的小程序的名字。 -
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],方括号表示可选。详细内容请看本期拓展。
-
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不是同一个东西,你可以理解为,一个是一幅画,一个是数字。画与画之间是不能进行数学运算的。但是可以摆在一起观看、欣赏,还可以摆成各种造型。
-
argv variable
中文翻译为:argv变量。这里的argv应该是argumentsvariantvector的缩写。就是参数变量的意思。
这里的argv其实就是相当于给一栋大楼命名为:argv。
为什么叫变量呢?因为大楼每层的数据都是可以改变的。
-
sys module
中文翻译为:sys模块。
其实就是别人写好的sys.py 文件。 -
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范式是一种表示计算机语言定义规范的规则。
常见如下符号:
- ::= 表示定义;
- “ ” 双引号里的内容表示字符;
- < > 尖括号里的内容表示必选内容;
- [ ] 方括号里的内容表示可选内容;
- | 竖线两边的内容选择其中一个,相当于or;
还记得我们说的命令行常见形式吗?
command [-options] parameter1 parameter2 ....
现在明白[-options]表示什么意思了吧。
本期记忆点
- import sys
- sys.argv[ 0 ]
请背诵并且练习本期的记忆点。你以后会经常用到他们的。
网友评论
可以开两个标签页,一边是英文一边是谷歌翻译的中文,对照阅读~