热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《笨办法学python3》系列练习计划——13:参数、解包、变量

题目学习什么是参数、解包、变量,并练习使用加分练习给脚本少于三个参数,看看得到什么错误,试着解释。在写两个脚本,其一接受更多参数,另一个接受更少参数,在解包时给

题目

学习什么是参数、解包、变量,并练习使用

加分练习

  1. 给脚本少于三个参数,看看得到什么错误,试着解释。
  2. 在写两个脚本,其一接受更多参数,另一个接受更少参数,在解包时给它们起一些有意义的名字。
  3. inputargv 一起用,使脚本可以从用户得到更多输入。
  4. 记住“模组”(模块、库)为你提供额外功能。记住它




我的答案

在本题中将了解另一种将变量传递个变量的方法(脚本就是 *.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

我们尝试几个不同的参数:
这里写图片描述

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》系列练习计划——目录


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • Python 可视化 | Seaborn5 分钟入门 (六)——heatmap 热力图
    微信公众号:「Python读财」如有问题或建议,请公众号留言Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seabo ... [详细]
  • 一json文件JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使 ... [详细]
  • 写在前面最近在学习爬虫,在熟悉了Python语言和BeautifulSoup4后打算下个爬虫框架试试。没想到啊,这坑太深了。。。看了看相关介绍后选择了Scrapy框架,然后兴高采烈的 ... [详细]
  • 这篇文章给大家分享的是有关python3怎样中文转换编码的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。示例:处理 ... [详细]
  • 浅谈Python3中打开文件的方式(With open)
    浅谈Python3中打开文件的方式(With open)-目录0.背景知识1.常规方式:读取文件-----open()2.推荐方式:读取文件-----WithOpen1).读取方式 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
author-avatar
一切随缘2502885767
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有