python笔记梳理
解释 面相对象 动态语义
1989诞生Guido天空马戏团
脚本语言 高阶动态编程语言-
交互模式 (程序在内存中缓存,不能保存) 文本模式
#!/usr/bin/python文件路径
源代码 .py 字节代码 编译成 .pyc (import py_compile) py_compile.complie.compile("1.py")
优化代码 源代码经优化成 .pyo (python -O -m py_compile 1.py) linux下的命令行下输入
变量是内存中的一段区域,是数据的引用或标签 比如 a a1 a_1 _a1
变量值更改时标签被移走
整数除法/ 小数部分被截除,使用普通除法可在程序前加上 from _future_ import division
整除符号// 取余符号% 幂乘方运算符号**
2**3 用 函数表示是pow(2,3) 称作内建函数
2*2是表达式 print 2*2是语句
表达式是某件事情 语句是做某件事情
程序主要包括表达式和语句
if 1 ==1:print 'one equals one'
模块可以看做Python功能的增强,>>import math >>math.floor(32.6) ceil
>>from math import floor >>floor(32.5)不用模块前缀
int float long 不是普通函数,是类型对象,int参数取整的时候自动向下取整
可以通过变量引用函数或者Python中大多数的对象 比如foo=math.floor foo(32.5)
虚数,负数cmath模块处理
文本模式Ctrl+F5运行
脚本运行 开头pound bang >> #!/usr/bin/env python
脚本添加可执行属性 chmod a+x hello.py
"let's go"或者‘let\'s go’转义。单引号双引号
拼接字符串 用加号
值转换成字符串两种机制:1.函数str 2.函数repr,结果字符串转换成合法Python表达式。 int可以将字符串转换成数值。
print repr("hello,world!") >>'hello,world'
print str("hello,world") >>hello,world
第三种是:
temp=2
print "the temperature is " +temp打印包含数字的句子,用到反引号,这个句子会出错,应该如下:
print "the temperature is " +`temp`
都是将Python值转换成字符串的三种方法。
name = input("what is your name? ")
print 'Hello,' + name + '!'程序运行出错,换成raw_input(),尽可能使用raw_input函数,它会把所有的输入当做原始数据将其放入字符串中。
三引号可用来文档注释
长字符串: 跨多行,使用三个引号代替普通引号,也可使用三个双引号
原始字符串: 对于反斜线并不会特殊对待,比如路径名C:\now,可用反斜线转义C:\\now。长路径时可用原始字符串,原始字符串不会把反斜线当做 特殊字符,如:print r'C:\now'。原始字符串中对引号转义的话输出字符串中包含了所用的反斜线。不能在原始字符串结尾输入反斜线。
Unicode字符串:存储为16位Unicode字符,如: u'hello,world!'
转义:反斜线\加上换行符\n,换行符 被转义了,也就是被忽略了,不是它原本的意思,可以在字符串中加入通常情况下不能直接加入的内容
Python首行不能缩进,Python比较严格。
按位与&按位或|。逻辑运算and or‘
Python数据类型:数字 字符串(定义完了不可变) 列表[](单个元素可变) 元组()(包括数字,字符串等不同类型,单个元素不可变) 字典(映射类型,字典对象和单个元素都是可变的,键不可变)
字符串&序列的操作:索引取值a[1:3:2] 切片有开头没结尾,最后一个是步长 a[-1]代表最后一个元素
元组小括号。列表中括号,列表添加元素list.append。字典大括号。
对象和类:属性就是对象描述,方法就是对象的操作
流程控制:逻辑真用大写T的True 代码块空四格
循环迭代(重复一个操作指令) 递归
range(len('hello'))获取序列的索引
字典遍历:
break跳出循环,continue跳出本次循环,exit()跳出整个程序。pass占位
for循环次数限制,条件判定循环可用到while
while
函数是语句组:def 函数名(参数列表):下行函数体
函数名多个单词的时候首字母大写,定义的时候括号里的是形参,调用的时候括号里的参数是实参
#coding:utf8(linux) 中文编码 gbk(win)
局部变量与全局变量
在函数内部声明全局变量,用global x
元组当做参数传入,直接传是不行的,参数个数差别。若t=('name','milo')元组。f(*t)。
字典传值是f(**d),d={'name':'milo','age'=30},且字典key和形参一一对应
函数返回值默认是none,函数有多个return,只执行第一个
print '%s : %s' % x,y传入x,y的值
f(x,*args)冗余参数,除了x剩下的在args元组里,,若参数是x=40,需要用字典存储,用f(x,*args,**kwargs)
除了测试,多用return不用print
Lambda匿名函数:
快速定义单行的最小函数,,,省去函数定义部分,精简函数,省去函数命名,,,比如:g = lambda x,y:x*y
冒号前是参数,可以是多个,逗号隔开,冒号后面是返回值,返回的是函数对象
reduce函数 将列表中的数逐次拿出来,用函数f作用在其上 reduce(f,l)
reduce(lambda x,y:x*y , l) l = range(1,6) = [1,2,3,4,5]
switch语句:多分支结构的程序(Python没提供switch结构,可用字典实现)
首先,定义一个字典, 其次,调用字典的get()获取相应的表达式
operator = {'+':jia,'-':jian,'*':cheng,'/':chu}
def f(x,o,y):
print operator.get(o)(x,y)
f(3,'+',2)
Python内置函数
divmod得到商和去模(余)
pow取幂
ip=192.168.1.1 ip.split('.')=
zip和map映射序列对,map元素不足补none,第一个参数可以是表达式处理。zip元素不足便补映射该项,不能数据处理
模块:被导入的脚本
导入模块,利用( 模块 . 模块里的函数)调用模块里的函数, 不希望模块函数执行 输入语句print __name__(内置属性)
if __name__ == '__main__':则为直接调用模块
查找模块优先级:当前路径==》lib==》site-package
python的模块可以按照目录组织为包>>包文件夹,包下__init__ ,包下扩展脚本
正则表达式:内嵌在Python中,通过re模块实现
小型,高度专业化的受限的编程语言
字符串处理 :字符匹配,普通字符元字符
定义正则表达式就是在定义一个字符串
t[io]p就是top 和tip t[^io]p是对tip和top取反 ^行首 $行尾 *零次或多次,+一次或多次,?又或者没有 +?最小匹配 {m,n}最少m最多n
积极乐观,好好coding