题目
学习什么是参数、解包、变量,并练习使用
加分练习
- 给脚本少于三个参数,看看得到什么错误,试着解释。
- 在写两个脚本,其一接受更多参数,另一个接受更少参数,在解包时给它们起一些有意义的名字。
- 将
input
和 argv
一起用,使脚本可以从用户得到更多输入。
- 记住“模组”(模块、库)为你提供额外功能。记住它
我的答案
在本题中将了解另一种将变量传递个变量的方法(脚本就是 *.py 的文件)。运行一个 python 脚本我们可以用命令行输入 python ex13.py
其中 python
是要运行的程序,而 ex13.py
就是参数了。
先来准备将被传递参数的脚本
from sys import argv
script, first, second, third = argv
print("The script is called:", script)
print("Your first variable is:", first)
print("Your second variable is:", second)
print("Your third variable is:", third)
print("\n")
脚本解析:
第 1 行:
import
语句的作用是引用我们(python自带的、其他人写的)已经写好的程序、“功能”,使这些“功能”可以在当前脚本中使用。
sys
就是本次引入的“功能”,我们一般叫它们“模块”或“库”。它提供了一系列有关 Python 运行环境的变量和函数。
import 有两种用法:
- 引入全部模块:
import sys
- 引入部分模块:
from sys import argv
这次用的就是第二种方法从 sys 模块中引入了 argv 个具体的“功能”(获取当前正在执行的命令行参数)
第 3 行:
这一行将 argv
进行了 解包 。解包是个编程专用的名词,作用是把 argv
中包含的多个值依次赋值个左边的几个变量:script, first, second, third
第 5-8 行:
我们把被赋值后的几个变量打印了出来。
这个脚本保存后需要在命令行中单独运行:(必须有 3 个参数)
python ex13.py first 2nd 3rd
我们尝试几个不同的参数:
![这里写图片描述](https://www.#.com/imgs/2/0/9/7/14/675e5cc2a0d2f8d770720cc78865e6f4.jpe)
13.1 使用不同数量的参数会怎样?
PS F:\python\笨办法学python3> python ex13.py 两个 参数
Traceback (most recent call last):
File "ex13.py", line 3, in
script, first, second, third = argv
ValueError: not enough values to unpack (expected 4, got 3)
当我使用两个参数的时候出错了
首先程序指出我们脚本第 3 行写的是 script, first, second, third = argv
这是刚刚解包的位置。
python 提示 ValueError
值出错了,具体错误是 not enough values to unpack (expected 4, got 3)
没有足够的值解包。
通对观察前面正确的截图,对比第 3 行的代码可以看出一些问题:
argv
解包的第一个值,对应变量 script
永远都是我们运行的脚本的名字。
- 命令行中最后三个参数分别对应了
first, second, third
三个变量。
- 错误的问题就在于
third
没有办法取得参数了,因为我们只输入了两个参数。
而当我们多一个参数时会这样
PS F:\python\笨办法学python3> python ex13.py 第一 第二 第三 参数
Traceback (most recent call last):
File "ex13.py", line 3, in
script, first, second, third = argv
ValueError: too many values to unpack (expected 4)
和上面的情况相反,这次错误信息告诉我们参数太多了。
可以看出 python 的程序非常严谨,多一个不行少一个也不行。而且错误提示太厉害了是不是
13.2 双参数和四参数版本
from sys import argv
script, first, secOnd= argv
print("The script is called:", script)
print("Your first variable is:", first)
print("Your second variable is:", second)
print("\n")
from sys import argv
script, first, second, third, fourth = argv
print("The script is called:", script)
print("Your first variable is:", first)
print("Your second variable is:", second)
print("Your third variable is:", third)
print("Your fourth variable is:", fourth)
print("\n")
返回目录
《笨办法学 python3》系列练习计划——目录