python初学者程序员

跟我读python3文档:007_使用python解释器(2.U

2017-08-23  本文已影响170人  咖喱py

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


往期回顾

 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
python3
exit( )
quit( )
ctrl + D

文档解读

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

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

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]表示什么意思了吧。

本期记忆点

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

上一篇下一篇

猜你喜欢

热点阅读