学程序不容易,靠程序吃饭更不容易。每一个软件开发人员都有自己的无奈。最近新换了工作,工作要求用python语言编写服务器监控系统。这个系统要布置到全国各地的机房,上百台服务器上。
需求大概如下:
1 能自动部署和升级
2 监控每一个机器的各种情况,硬件情况,系统状态(内存剩余),软件情况,比如并发连接数量等等
3 能根据出现问题的类型,自动发邮件给对应的人员。
晕菜啊。话说自己根本没有接触过python,一切只能从零开始,为了生活,开工。
自己只学个c语言(菜鸟级别),打算按照学习c的顺序学习python。有语言基础学的比较快。
Python 版本:Python 2.4.3
平台:linux(centos)
编辑工具:vim
第1篇
每个程序的书都是从hello world开始。也是从这里学起,看了部分网上的资料,直接学习脚本了,这个能直接用在工作上,所以不学习命令行那种方法。
#>vim helloworld.py
内容如下:
#!/usr/bin/python python所在的路径
# Filename : helloworld.py 注释
print “Hello World” 通过print方法输出字符串helloworld
执行以下试试:
#> chmod a+x helloworld.py
#> ./helloworld.py
Hello World
恩,果然正常。这只是个学习前的小例子~给自己打打气!
从基本数据类型开始学习
常量和变量
常量:就是不能改变它的
变量:使用空间存储任何东西
常量和变量的命令规则:
标识符的开头字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’)
标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组成
标识符名称是对大小写敏感的
数据类型:
整数(int) 1和35
长整数 (long) 比整数更大的整数
浮点数 (float) 就是带小数点的(基本用不到)
复数 (不搞复杂的计算用不到)
字符串 字符序列
这里要说一下,字符串的表示形式在python有3种:
1使用单引号(')
用单引号指示字符串,就如同'Quote me on this'这样。所有的空白,即空格和制表符都照原样保留。
2使用双引号(")
在双引号中的字符串与单引号中的字符串的使用完全相同,例如"What's your name?"。
3使用三引号('''或""")
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号
其中,单引号和三引号比较常用,我感觉是这样么用的。续行用和脱意符 /
对象 恩!说这门语言是面向对象的,一切接对象,所有对象也是变量(再学习学习可能就明白了 )
表达式和语句
表达式:
I=3 这是个表达式
把这个写到python脚本里面:
I=3 占一行 这个就是一个语句了
表达式可以连着写的,用;连接,但是按照大多数开源项目代码来看,并不推荐一行里面写很多表达式。
运算符
(来自Python参考手册)
运算符 | 名称 | 说明 | 例子 |
+ | 加 | 两个对象相加 | 3 + 5得到8。'a' + 'b'得到'ab'。 |
- | 减 | 得到负数或是一个数减去另一个数 | -5.2得到一个负数。50 - 24得到26。 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 | 2 * 3得到6。'la' * 3得到'lalala'。 |
** | 幂 | 返回x的y次幂 | 3 ** 4得到81(即3 * 3 * 3 * 3) |
/ | 除 | x除以y | 4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333 |
// | 取整除 | 返回商的整数部分 | 4 // 3.0得到1.0 |
% | 取模 | 返回除法的余数 | 8%3得到2。-25.5%2.25得到1.5 |
<< | 左移 | 把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1) | 2 << 2得到8。——2按比特表示为10 |
>> | 右移 | 把一个数的比特向右移一定数目 | 11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。 |
& | 按位与 | 数的按位与 | 5 & 3得到1。 |
| | 按位或 | 数的按位或 | 5 | 3得到7。 |
^ | 按位异或 | 数的按位异或 | 5 ^ 3得到6 |
~ | 按位翻转 | x的按位翻转是-(x+1) | ~5得到6。 |
< | 小于 | 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | 5 < 3返回0(即False)而3 < 5返回1(即True)。比较可以被任意连接:3 < 5 < 7返回True。 |
> | 大于 | 返回x是否大于y | 5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。 |
<= | 小于等于 | 返回x是否小于等于y | x = 3; y = 6; x <= y返回True。 |
>= | 大于等于 | 返回x是否大于等于y | x = 4; y = 3; x >= y返回True。 |
== | 等于 | 比较对象是否相等 | x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。 |
!= | 不等于 | 比较两个对象是否不相等 | x = 2; y = 3; x != y返回True。 |
not | 布尔“非” | 如果x为True,返回False。如果x为False,它返回True。 | x = True; not y返回False。 |
and | 布尔“与” | 如果x为False,x and y返回False,否则它返回y的计算值。 | x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。 |
or | 布尔“或” | 如果x是True,它返回True,否则它返回y的计算值。 | x = True; y = False; x or y返回True。短路计算在这里也适用。 |
运算符的优先级
(来自Python参考手册)
运算符 | 描述 |
lambda | Lambda表达式 |
or | 布尔“或” |
and | 布尔“与” |
not x | 布尔“非” |
in,not in | 成员测试 |
is,is not | 同一性测试 |
<,<=,>,>=,!=,== | 比较 |
| | 按位或 |
^ | 按位异或 |
& | 按位与 |
<<,>> | 移位 |
+,- | 加法与减法 |
*,/,% | 乘法、除法与取余 |
+x,-x | 正负号 |
~x | 按位翻转 |
** | 指数 |
x.attribute | 属性参考 |
x[index] | 下标 |
x[index:index] | 寻址段 |
f(arguments...) | 函数调用 |
(experession,...) | 绑定或元组显示 |
[expression,...] | 列表显示 |
{key:datum,...} | 字典显示 |
'expression,...' | 字符串转换 |
为了明确语义,多加点括号就可以了