美文网首页python初学者程序员
跟我读python3文档:007_使用python解释器(2.U

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

作者: 咖喱py | 来源:发表于2017-08-23 10:18 被阅读170次

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


    往期回顾

    • 有特殊作用的注释代码
     #!/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 ]

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

    相关文章

      网友评论

      • yunlux:argv 应该是 arg vector

        可以开两个标签页,一边是英文一边是谷歌翻译的中文,对照阅读~
        咖喱py:@张云路 是的,应该是arg vector。

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

      本文链接:https://www.haomeiwen.com/subject/zxirdxtx.html