python第一天
python介绍
Python作为一门高级语言,他的历史我就不在多做介绍,毕竟网上相关信息很多,有兴趣的同学可以自行百度。谈到python我们不得不说到C,毕竟python来自C嘛。广大群众都说C语言程序执行速度快,那么为什么C语言快呢。
C直接编译成机器码,其他语言编译成字节码,在经过处理成为机器码。但是不得不说C这种语言还是存在一些问题,比如内存的回收,这就需要程序员自己去考虑了,而python等高级语言,能够做到内存自动调节。之所以选择python作为学习,主要是python类库资源丰富,且linux原装python。(linux运维的福音啊)。并且作为胶水语言,python能够配合其他语言协同工作。
python的主要应用领域为:
数据分析
系统编程
组件集成
网络服务 ★★★★★
图像处理
数值计算和科学计算
而其中网络服务,恰恰是我们运维人员最需要的。
上面我们已经确定了要选择python这种语言,但是python种类繁多,主要分为以下几种
Cpython:用C进行编译,我们选用这个
Jyhton:拿到python代码后编译成java的字节码
IronPython:C#搞得
PyPy:python实现的python
安装python(windows下python无法多进程)
这个没什么好说的win环境下就是一路next就OK(windows下需要把python的路径增加到环境变量PATH中),linux默认就带了python,如果需要安装其他版本的python,请把yum配置修改为原有python路径
执行过程
解释器把数据读到内存,然后相关分析(词法、语法分析)。编译-->执行
unicode 能识别但是不能写入到硬盘,且占用内存大,至少是两个字节16位。中文一般三个字节。
UTF-8是unicode的升级版,智能控制内存。英文还是采用ascll方式存储,中文采用unicode
注释方法
# -*- coding:utf-8 -*-
或者
# coding:utf-8 (除非人品极差,否则很少出问题)
3.0默认是UTF-8
注释
单行注释用#
多行注释以"""开始"""结束
模块种类:内置模块、自己编写的、别人写的
import sys
sys.argv 捕获参数
pyc 字节码文件,编译后的产物。导入时如果m.py和m.pyc功能是一样的话,优先执行.pyc。不一样的话编译.py成.pyc然后把pyc编译成机器码执行
变量
变量由字母数字下划线组成,第一位不能为数字,且不能与内部关键词重名
name1 = "123"
name2 = name1
此时name1 和 name2 的值均为123
name1 = "456"
此时name2还是123 字符串不会随着原有内存地址指向的改变而改变
C语言中是没有字符串的,但是C语言有字符。所以python的字符串是是由字符数组来保存的(python是由C开发的)
所以造成name2没有改变的原因是,字符串发生更改,就是在内存中重新创立
由于数组是连续的所以字符串修改必须开辟空间
假设三个字符串需要相加时"hello" +"hehe"+ "woqu"
所以开辟时需要3次
"hello"
"hello"+"hehe"
"hello" +"hehe"+ "woqu"
id(变量) 查看内存地址
小数字池 -5到257 如果两个变量值在这个范围则自动合并
常见数据类型
两部分
1、单值
数字
整形
长整形 (整形过长自动转换哦)
浮点型
复数 (无视吧,一般情况下你玩不到,工程貌似可以用到)
布尔值, True, False
1 0
字符串
2、集合
列表
元组
字典
哈希表
模型绑定,用户验证
可以对用户输入进行验证
查看变量类型:type(变量)
字符串格式化
%属于占位符
使用方式
%s:字符
%d:数字
%f:浮点数
name = 'i am %s' % 'alex'
name = 'i am %s ,age is %d' %("alex",73)
采用索引
name = "i am {0},age{1}"
name.format("alex",18)
字符切片
name = "alex"
name[0]=a
name[0:2]=al ##0开始小于2
name[0:] ##从0到最后
name[-1] ##最后一个
print len(name) #查看多少个字符
去除字符串开头和结尾的空格
name = " alex"
print name.strip()
print name.lstrip() #去除左边的空格
print name.rstrip() #去除右边的空格
question
为何可以通过索引取
类里面有什么可以?怎么可以支持下标
names.split(分隔符)
列表
列表创建
name_list = [ 'alex','seven','eric'] ###调用下面的内容
或者
name_list = list([ 'alex','seven','eric'])
列表追加
name_list.append = ["hehe"]
删除
del name_list[0]
获取长度
len(name_list)
判断是否存在列表
“alex” in name_list #返回布尔值
循环
for ele in name_list:
print ele
条件循环
for ele in name_list:
if ele == "alex":
print ele
break
创建元组(不可修改,列表可以修改)
ages = (11, 22, 33, 44, 55)
或
ages = tuple(['alex','seven','tony'])
["alex",("seven","alex")]
字符(str)
列表(list)
元组(tuple)
共同点:切片、包含、索引、循环
异同点:
str修改后重新创建空间
list修改后内存空间不变
tuple不能修改
dict(字典又称为键值对)
字典无序
特殊的for循环
key() --> 列表
values() --> 列表
person = {
"alex": "alex",
"age": 18,
"gender": "看心情",
}
通过键进行查询
person.keys() #获取所有的key,属性为列表
person.values() #获取所有的值,属性为列表
person["name"]
字典进行循环
for key,value in person.items():
print k
print v
#出来的数据的顺序是随机的
文件内容读写
file_obj = file("文件路径","模式")
1、找到文件
2、打开文件
file(文件路径,文件打开形式)
形式很多:例如只读、二进制、等等
3、文件操作
file_obj.read()
file_obj.readlines()[行,] #得到列表
for line in file_obj.xreadlines(): # 逐行读取,貌似已废弃
print line
for line in file_obj: #替代品
文件写
file_obj.write()
file_obj.writelines()
4、文件关闭
file_obj.close()