首页 > 代码库 > Python基础学习
Python基础学习
Python擅长领域
web开发 django flask weepy等
网络编程
科学运算
GUI图形开发
运维自动化
python2 3 区别:
Unicode support: python3可以直接写中文
Python2 不会太更新了
2 print ‘’
3 print ()
库改名
Twisted 目前还不支持3.0
python hello.py
表示 hello.py脚本有Python解释器来执行
如果想类似执行shell脚本一样执行Python 例如./hello.py 需要在hello.py文件 头部指定的解释器
#!/usr/bin/env python 找环境变量为Python
#!/usr/bin/python 路径写死了 /usr/bin/python
执行前 吸引给文件加权限 chmod 755 hello.py
常量 --Python 大写 代表常量
name =‘a‘
name_new = name
name ="c"
name_new 指向a的内存地址
注释多行 三个引号 ‘‘‘ ‘‘‘
pass 占位符 不走本行
pyc 相当于编译后的文件
32位系统整数是32位 -2**31~2**31-1
64位系统 64位
long 长整型
python2.2以后 数据溢出了自动转换类型
Python3 没有长整型
Python不需要声明数据类型
Python 是解释型语言
高级语言 变成 计算机语言 一种是通过编译(java) 一种是解释
int 整数
字段转元组 很耗时
用户输入
shell ----read
Python2 raw_input()
Python3 input()
%d 整数
%s 字符
%f 浮点
字符串
不可修改 每次修改是 生成新数据
列表是在原来内存上修改
列表可以嵌套列表字典 可以嵌套任何东西
字典 特性: 无序 (通过key找值 ,不需要通过下标 通过哈希算法)
字典可以嵌套列表 字典 可以很多层
popitem() 随机删
isdigit() 检测字符串是否只由数字组成
center(50,’-‘)
默认字典无序
集合 无序
最常用的两种操作
交集 list1.intersection(list2)
并集 list1.union(list2)
差集 in list1 but not in list 2 lis1.difference(list2)
子集 list11.issubset(list2)
父集 list1.issuperset(list2)
对称差集(没有的取出来 ) list1.symmetric_difference(list2)
添加
删除 删除一项 t.remove(‘s‘) 不存在的话 会报错
长度 len(s)
X是否是 S的成员----- 列表 字典 集合 字符串
pop() 删除并返回任意元素
discard() 删除元素 不存在 不报错
拿一个新列表 for循环 元素i放到新列表中 跟原列表比较
去重
关系测试
添加一项 t.add(‘x‘)
添加多项 t.update([10,2,8]
集合---常用
常用操作 打开 读 写 关闭
2.7 file()
3.X open()
f = open("a.txt",‘r‘,encoding="utf-8").read()
w 是创建一个文件 如果有原文件 会被覆盖
a append 追加 不覆盖原来的文件 也不能读
read() 类似指针 读过程在移动
f=open("a.txt")
data = http://www.mamicode.com/f.read()
data2 = f.read() 因为指针到文件尾了,so读到的内容为空
f.close() 不写关闭的话 程序执行结束 自动关闭
f.readlines() 结果为列表
strip() 去掉换行 和 空格
for index,line in enumerate(f.readlines()) 打印下标
readlines() 把文件读一次性全部读到内存中 不适合操作大文件
read() 多了也不适合 也占内存
file.tell() 字符
file.read(5)
f.seek(0) 回到文件哪 0开头 10 第十个字符位置
f.fileno() 返回文件内存编号 ---不常用
Python读文件 是调用操作系统的io 不是自己去读y
isatty() 是否是终端设备
seekable() 是都能移动
linux 一切皆文件
f.flush() 强者刷
没有写 默认是读模式
w 写 就不能读
文件
比如写 默认是内存的缓存满了在往内存里写
buffer 内存中的临时文件
import syssys.stdout.write() #std 标准f.truncate() 截断
不写是清空文件
f.truncate(10) 从文件开头截断到 指定位置 移动也不好使 都是从头开始
r+ 读写 --常用
read + append
w+ 写读 ----没啥用
先创建一个文件 在写
在源文件上的修改 覆盖
a+ 追加读
a 不能读
rb 二进制读文件 比如视频等 二进制 不传encoding
网络传输 3.0 socket 传输
二进制文件打开
wb 二进制写 2.0 区分不大 3.0 要注意
字符串.encode() 转byte
打开一个文件 修改完存到另一个文件
vim 是把文件全部放内存中 今行操作
文件修改: 从一个文件里读 写到另一个文件 as f
with 自动关闭文件
2.7后支持 多个文件
with open(‘a.txt‘,‘r‘), open(‘b.txt‘,‘r‘) as f1,f2:
with open("/Users/qiao/changhenge.txt",‘r‘,encoding=‘utf-8‘) as f,\
open("/Users/qiao/changhehge_new.txt",‘w‘) as f2:
#high 逼格 高效 读一行 删一行内存 : file 变成了迭代器 不是列表了
for line in file:
print (line)
字符编码# utf-8 --decode---> unicode ---encode-->gbk# utf-8 <--encode-- unicode <---decode---gbk
>>> sys.getdefaultencoding()
‘ascii‘
英文 按accii
中文三个字节 ?
Unicode 中文英文都占两个字节 万国编码
ascii 一个字节
utf-8 可变长
gbk
Python3 默认编码Unicode
2.7 默认编码 accii
s =
print (s.encode("gbk"))
print (s.encode("utf-8"))
print (s.encode("utf-8").decode("utf-8"))
print (s.encode("utf-8").decode("utf-8").encode("gbk"))
函数
不加return 默认返回null
Python 可以返回多个值
形参
实参 实际存在 占用空间的
def test(x,y):
test(1,2) 与形参一一对应
test(y=2,x=1) 关键词调用 与形参顺序无关
def test(x,y,z)
test(1,z=3,y=2) 正确
test(1,2,y=3) 错误
def test(x,y=2)
调用的时候 可以 test(1) 默认参数非必传
用处:a 连接数据库 b 默认值
参数组 :可以传不固定参数def test(*args):*args 接收的是 位置参数 不能接收 关键字参数 转换成元组 形式位置参数不能写在 关键字参数 后面def test(x,*args):
print(x)
print(args) 调用test1(1,2,3,4,5,6,7)
def test2(**kwargs) 形参是字典
def test4(name,age=18,**kwargs):
test2(name=‘alex’,age=8,sex=‘F’)
关键字参数
**kwargs 功能 把关键字参数转换成字典
位置参数 关键字参数
def test3(name.**kwargs) test3(‘alax’,age=8)
参数组要往后放
局部变量 在函数里变全局变量 global name 但不要这样做 尽量不要这样做全局变量 在外部显示字符串 和 整数 是不可以在局部里改全局list 集合 字典 类等稍复杂的数据对象 可以最大递归次数 999递归 特性:
函数调用是 通过栈(先进后出 )
必须有一个明确的结束条件
每次进入更深一层的递归 问题规模应比上次减少
递归层过多 会导致栈溢出
函数式编程 :通过一堆函数调用 实现功能 Python不适用
hashshell erlang lisp
例如 subtract(multiply(add(1,2),3),4)
高阶函数: 一个函数接受另一个函数作为参数
Python基础学习