今天是学习Python的第五天,实际上已经过了大概七天吧,因为昨天又没干活,把前四天的复习了一下,在看第一天的时候突然有种想用Linux的冲动,于是去下了VM10,下了uBuntu15.10优麒麟、RHEL 6,然后心血来潮又在京东花了59买了本《鸟哥的linux私房菜》。当年在长沙陪着初恋时,她学的就是Linux,那时候我一无所有,每天就着这本书来充实自己,以为自己会在这条路上走的更远,只是可惜败给了现实,败给了父母,最后并没有在这条路上走下去,当时拜读了王垠的《完全用linux工作》,深受鼓舞,前面的种种都导致我现在对linux有一种莫名的好感,如今能回过头学回来,也算有希望完成夙愿吧。
那今天就继续Python学习吧,废话说的够多的了
习题12提示别人
这节跟昨天我的发现一样,主要是运用raw_input()括号内可以输入字符串,从而作为提示显示出来。
然后这节使用了pydoc命令
在Terminal下命令是pydoc raw_input,在win下是python -m pydoc raw_input
pydoc命令的功能目测是把后面命令的帮助文档打印出来,比如raw_input:
raw_input(...)
raw_input([prompt]) -> string
Read a string from standard input. The trailing newline is stripped.
If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
On Unix, GNU readline is used if enabled. The prompt string, if given,
is printed without a trailing newline before reading.
可以看到第一行是用法,而且把该函数输出类型也标出来了,是string型,后面则是一些详细的说明,再比如input:
input(...)
input([prompt]) -> value
Equivalent to eval(raw_input(prompt)).
可以清楚的看到input()等价于eval(raw_input()),跟前几天学的东西一模一样。
通过这两个例子可以看到pydoc具体的用途,以后有任何Python命令不明白,直接用该命令即可,非常棒。
习题13参数、解包、变量
本节首先学习了import命令:
from sys import argv
这是将Python功能引入脚本的方法,Python本来不会将所有功能给我们,而是我们需要什么就调用什么,这样可以让程序保持精简,而且再读代码的时候也可以通过import知道我们调用了哪些功能。
这里提到的“功能”,实际上的名字应该是“模组”,英文名"modules",也称为“库(libraries)”,以后再提到调用什么功能,我们就要这样说了:“把sys模组import进来”。。
argv是“参数变量(argument variable)”的意思,argument是参数,variable是变量。
而习题到这还没有结束,参数要赋给变量,需要解包的过程,这里的代码如下:
script, first, second, third = argv
运行程序的方法是这样:python ex13.py first 2nd 3rd
输出是这样的:
The script is called: .\ex13.py
Your first variable is: first
Your second variable is: 2nd
Your third variable is: 3rd
这行代码就是“解包”,解包的对象是"agrv",过程是这样:参数传入程序后,在该行代码时将agrv解包,依次从左到右赋给左边的变量名,script是脚本名也就是'ex13.py',first=='first',second=='2nd',third=="3rd"。
至于为什么ex13.py也传进去了,我觉得python命令默认就是把这个文件名作为参数传到Python里,然后再去解析相对应的文件,所以在我们需要通过python命令获取参数时,当我们传递了ex13.py——也就是我们要运行的脚本名时——也将对应的字符串传过去了,于是我们获取agrv参数变量时,也包括了传进来的脚本名。
另外当只有一个变量时,获取的参数将是这样:
The script is called: ['.\\ex13.py']
(也许可以旁证python运行脚本时是将脚本名视为参数变量的。)
或是这样:
The script is called: ['.\\ex13.py', 'first', '2nd', '3rd']
也就是说只有一个参数时获取的应该是个数组。
(而且Python是根据数组第一个参数来找到脚本运行)
需要注意,参数的数量必须与变量的数量一致,多了会报too many values,少了会报need more than X values to unpack。
argv是sys包里的一个模组,假如我用argvv就会不认识报错,可以明白sys包的argv模组应该就是专门用于接收python运行命令的模组。
argv和raw_input()的区别:argv是我们需要在脚本运行前也就是执行命令时输入,而raw_input()是脚本运行过程中需要我们输入。
相同的是命令行输入的参数都被视为字符串,比如需要输入数字型时,就需要用int()先转化为数字。
本节总结:本节习题学习了import命令,主要是from xxx import xxx,引入模组的概念使得程序简洁,可读性高,需要什么引用什么也避免了浪费资源加载一堆没用的模组,然后还学到了解包的概念,agrv作为接收命令参数的模组,当传递了除脚本名以外的参数时,可以将其解包赋给对应数量的变量,解包的概念也就在这过程中明确了。
今天就到这吧,边看边学导致进度略慢,我应该好好反思一下……
最近特别想去听伍佰演唱会,5.7在山西太原,1080的内场票,火车来回800,单程时间25小时左右,演唱会的名字叫《无尽闪亮的摇滚·全经典》,个人来说从大学第一次唱伍佰的歌就是那首《突然的自我》,几乎每次去ktv我都必须唱这首,曾经有一次我说:我在大学开始唱这首歌,每次去ktv我都会唱,我想也许我会唱一辈子这首歌了。关于演唱会,我原来希望的是听一场五月天的歌,因为五月天对于我的青春也是个特别深刻的符号,我没有把伍佰的歌听全,但是对于五月天,我是几乎把他们发行过的歌曲都听了几遍,只是可惜的是今年并没有五月天的演唱会,至少在大麦网上没搜到,而纵观全年,只有伍佰的演唱会吸引到我,从很久之前我就想过我这辈子一定要听一次演唱会,如今这个机会摆在我面前,可是我却犹豫了,是因为地理原因吧,离得太远了,路上就要花费两天约50小时的时间,为了这么一场演唱会,到底值不值?还是我不应该去思考值不值,单靠直觉我是非常想去的,那么就这么简单的决定吗?我什么时候变得这样畏首畏尾了呢?也许也有花钱的因素在里面,来回一趟就要花2000多元,确实是比较大的一次花销,我想这才是关键……钱真的很让人难过……