Python学习笔记1
基础性质概念
1)历史
发展久,与java同期
2)版本
3.X 2.7lib多常用
3)脚本语言,不需要编译
4)解释性语言,读一行解释一行
5) 运行性能较差,没有ruby差 哈哈哈哈
6) lib(库文件)多,声音视频,数据挖掘,支持的东西多
7)可读性高
特点
1)GIL:全局解释锁Global Interpreter Lock
不能利用多块cpu,所以使用多进程机制(并行)解决GIL,消耗资源。
java,go 可以支持多cpu
2)面向对象
3) 在java static 块写程序,就和写脚本一样
编程环境:
1)vim
在vim 中设置缩进为4个空格
touch /.vim/vimrc
68set encoding=utf-8
69set number
70set hlsearch 高亮显示
71set tabstop=4 一个tab四个空格
72set shiftwidth=4
73set expandtab
2)python
退出 exit() | Crtl+d
帮助 help(str) 查看字符串帮助文档
3)pycharm
基础知识
基本运算
变量类型:变量的类型不指定,直接定义
基本类型和强制类型转换
如果不强制类型转换,两种不同的类型运算就会报错,这就是强类型的编程语言的特点
布尔类型和逻辑运算
True
False 0 None '' [] {}
1) []
a=[] // a=
if a:
print 'a:',a
else:
print 'empty'
2) None
a=None
if a == None
print 'None'
if a is None:
print 'None' 常用
3)and or not in
if 'a' in
print ...
注意: 尽量不用浮点数
list 列表
没有长度限制,可以有元素也可无,支持不同类型的存储
c={1,2,3,4}
c.append(5)
c.append(XX)
print c
tuple 元组
(1,2)
tuple 元组:长度不可变
str ,string,长度不可变
dict字典 键值对,key-value
d={
"a":"abc",
'b':123,
'c':,
'd':{'a':111}
}
print d['a'] abc
print d['b'] 123
两种引用
""" 可以换行,通常用作方法的注释
文件操作
读取文件
with open('lalala.txt','r')as f:
test=f.read()
print test
写文件(覆盖写入)
out=miaomiao
with open('lalala.txt','w')as f:
f.write(out)
语句
1)pass 空操作。
if xxx='a'
pass
else:
do... 程序主体
2)break 跳出当前循环。
3)continue 本次循环continue 以下的语句不执行。
4)while True永真循环用break跳出
do...
if xxx=='aaa'
break
5)for
1)一重循环和缩进
for item in :
printitem 在循环语句中
print a 不在循环语句中
python :靠缩进区分语句是否在循环中
2)两重循环
for item in :
printitem
foriteml in ['a','b','c']:
printiteml
小练习:输出菱形。
注意:循环逆序输出用 for x in range(4)[::-1]:
输入
input 输入数字
raw_input输入字符串
a=input("input a number ")
print type(a),a 显示输入的类型
一般情况下,用input不能输入字符串
通常用raw_input输入字符串
注意:但是以 ’字符串’方式,input也能输入字符串~~
小练习:猜数字,三次机会,猜对就退出,大:提示大,小:提示小。
方法
定义类(驼峰命名法)
CreateStudentInfo
定义方法(小写和下划线)
def print_param(p1,p2,p200):
print param
return 'a' //要是没有return 默认return None
print_param('ss') 调用方法(只看方法名,没有方法的重载)
常用方法
[*] len() 求string list dict长度的方法
print len(c)
[*] del() 删除的方法,可以删除字典,列表list????
dd={'a':123,'b':456}
del dd['a']
[*] type ()
[*] a) [] : list 列表
b) () : tuple 元组
c) ‘’ : str 字符串
d) {} : dict字典(键值对)
e) None : NoneType
f) True : bool
小练习
判断输入的年份,是否为闰年。(能被4整除但不能被100整除)
常识
yield生成器
globle 全局变量
解释器
cpython :traditional
pypy:use py explain py
jython :java
大多支持2.7
异常处理
raise Execption('xxxx error')
try/except/finally
导入包
import
from xxxx import
断言
assert a=='bsss','error info ...'
赋值
a=1
a=[]
a={}
交换变量
a=1
b=2
a,b=b,a
set 集合(去重)
应用:list去重
a=set('aba') //只有字符串才用这种
print a
a=set (['a','a','b'])
print a
print 'b' in a 某个元素是否在集合内部
True 在
False不在
b=set('abc')
print a-b减没了
print b-a
print a&b 交集
print a|b并集
print b>a 比较集合的数量 True
给集合添加元素: 添加位置为第一个元素后面,即成为第二个元素
a.add('d')
print a
把集合转换list
print list(a)
小练习
求出两个集合中的相同元素和不同元素。
模块和包
模块: 一个py文件就是一个模块(module)
包: 是一个包含一个_init_.py文件的文件夹
导入(引用)
import和from import 区别
import (变量等…)from 包.模块
import 模块中的(变量等…)
自己写
不同包中变量名会相同外部的包,变量等会冲突
用什么导什么
import 一般不能计算,计算写在方法里
循环导包会产生错误
a import b, b 不能import a,不能产生自循环
敲黑板:所以应该局部导入,减少类似错误!!!!!
工具
pip install tornado
pip list 列出当前列表
pip install -r requirements.txt依赖
requirements:
Django == 1.5.4 ==版本 什么都不写,最新的
MYSQL-python==1.2.4
pip uninstall <package_name>
pip uninstall -r requirements.txt 卸载所有
pip install -U <package_name> 升级
pip show -f <package_name> 显示包所在的目录
pip search <key>
pip list -o 查询所有可以升级的包
下载一个pip的包
pip install <package> -d <path>
mkdir myproject
resources存放证书等...
src :python, shell, SQL等…
test
src/python/launcher.py入口文件
src/python/test_str
src/python/test_str/__init__.pyc运行python后生成的编译文件
src/python/test_str/__init__.py 通常一个可导入的包中,有这个文件
vim __init__.py
if __name__=='__main__' 可以自己用,不能被别人导入??????
print 'test str'
编写入口文件。
vim launcher.py
#encoding=utf8
import test_str
import time
while True:
print'working...'
time.sleep(1)
注意:
1.在launcher.py 可以importtest_str(别的包或模块)
2.launcher 不能被别人import
3.#encoding=utf8 文本中如果想要有汉字就加这句。
字符串
基础
字符串的拼接 "aaa" +"bbb"
字符串的乘法 a=a*3 "aaabbbaaabbbaaabbb"
a1=a
print type(a1),a1 一个字母拿出来是字符串,不是字符,python中没有字符概念
字符串中常用方法
# encoding=utf8
a='today is a%s day %s'%('good','la')
print a
print a.find('d') 找到a中第一次出现d的位置(从0开始哦)
print a.endswith('la') a是否以la结束(true,false)
print a.replace(' ','_') 将a中空格替换成下划线
print 语句中不能。。。。
print a.split('_')以下划线为分隔符,切分成list
索引切片
字符串的切片
# encoding=utf8
a='today is a %s day %s'%('good','lia')
print '',a
print '0 -10'
print '0:5 ',a
print '1:5 ',a
print '1:-1 ',a
print '-2:-1',a[-2:-1] ???
print '-1:-2',a[-1:-2] 切片是从左到右,所以从右到左没有值
print a[-2:-3:-1] ???
print a[::-1] #每个单词反转
练习
#encoding=utf8
a='abcdefghijklmnopqrstuvwxyz'
print a.find('i')
print a[-3:-1]
print a
print a
print a
for i in range(26):
if (i%2):
a=a[:i]+','+a# 字符串本身不能直接赋值,利用切片的方法改变字符串的值
print a
a='abcdefghijklmnopqrstuvwxyz'
print a[::-1]
l=len(a)
print l
import sys
for i in range(l):
if (i%4==0):
print a,
if(i+4>l):
sys.stdout.write('*'*(4-l%4))
# sys.stdout.write输出无空格而且不换行
# '*'*n 将*输出n次
列表的切片
#encoding=utf8
l=[]
l=
l=list('abcd')
print l
print l
print l 数空空 0a1b2c3d
print len(l)
ll=+ 列表的拼接
print ll
print '---------------------'
l2=[]
l2.append('haha')#追加
print l2
for i in range(100):
l2.append(i)
print l2
l4=[,[],]
print l4
l3=
l3.insert(3,0) insert(位置,值)
print l3
l4=['a','b','c','a','c']
print l4.count('c') 统计字符出现的次数
l4.sort()
print l4
l4.reverse() 反转
print l4
del l4 删除
print l4
append()返回值为None
常用方法
pop() 弹出最后一个值,list中就没有这个值了
extend() 把两个列表加在一起
append() 往列表里,添加元素
reverse() 反转
del l4 删除
insert(位置,值) 插入
count('c') 统计字符(c)出现的次数
isinstance
#encoding=utf8
L=
import types
print # 如果是int类型,才输出
print #给每个值*10输出
#去重
L1=
rs = []
print rs
L1=
print "------------"
m=
n=
same = []
diff = []
print same
print diff
页:
[1]