- Python filename.py,在执行.py文件之前,需要把当前目录切换文件所在目录
- 使用python命令切换到交互模式
- 使用./filename.py直接执行py文件需要在.py文件的首行加上#!/usr/bin/env python 3 # -*- coding:utf-8 -*-
- print()函数用于输出,print(‘hello’);默认是换行输出的,想要实现不换行输出需要在变量末尾加上’,’ python3要求带括号
- input()函数用于输入,函数中可以添加提示,个人测试使用raw_input();更合适。
- 注释符号#
- 相邻的两句的缩进需要统一使用tab或统一使用空格,不能混用。
- 在python中strings tuples numbers是不可更改的对象,而list dict则是可以修改的对象
- 同一行多条语句的时候使用;隔开
- 多行内容使用\n换行符或者使用(··· ···)反引号
- 除法分/和//地板除两种,地板除得到的是整数
- 字符编码:utf-8 汉子三个字节
- \u开头的字符串是unicode编码,转换为中文汉字使用str.decode(‘unicode_escap’)
- ord(char)获取自负对应的整数,chr(int)获取整数对应的字符
- 将字符串保存到磁盘上时需要将类型转换成字节流类型bytes,bytes类型数据使用’b’做前缀x=b’abc’使用的是str.encode(),bytes.decode()。包含不能被解码的字节,decode就会报错。
- len(str)函数查看字符串包含多少字符
- 格式化占位符%d整数 %f浮点数 %s字符串 %x十六进制整数 %来转义%号
- 条件循环等语句都是以关键字开始以:结束该行之后的一行或多行构成代码组,不支持switch
- 允许同时为多个变量赋值a=b=c=1
- del用来删除单个或多个对象的引用
- +字符串连接,*重复操作,操作*n重复n次
- 数据类型:数字、字符串、列表、元组、字典
- 列表用[]标识,列表切割也用[头下标:尾下标],包含头下标对应的值不包含尾下标对应的值,使用list.append[‘’]为列表项追加元素,使用del()删除列表元素del list[index],删除指定位置元素
- cmp(l1,l2)比较两个列表的元素
- len(list)列表元素个数
- Max(list)列表元素最大值
- min()
- list(元组)将元组转换为列表
- Lname.append(obj) lname.count(obj) lname.extend(seq) lname.index(obj) lname.pop()
- lname.remove()移除列表中某个值的第一个匹配项
- lname.reverse() lname.sort() lname.insert(index,obj)
- 元组用()标识,元组不能二次赋值,相当于只读列表
- 注意元组中只包含一个元素时,需要在元素后面添加逗号
- 元组中的元素是不能修改的,但是我们可以对元组进行组合
- 元组的元素值是不允许删除的,但是我们可以使用del语句删除整个元组
- 元组中的方法cmp(元组1,元组2),len(元组)计算元组个数,max(元组)min(元组),tuple(列表)将列表转换为元组
- 字典用{}标识,类似js中的对象
- Dict(a=‘’,b=‘’),通过方法创建字典
- 访问字典 dict[‘索引值’]
- 删除字典元素 del dict[‘索引值’]
- 清空字典所有条目 del dict;
- 注意不允许一个键出现两次,键值必须不可变,所以可以用数字,,字符串或元组充当,但是不能使用列表
- cmp() len()
- type(var)返回输入变量的类型
- str(字典名) 输出字典可打印的字符串表示
- Dict.clear() 清空字典
- Dict.copy()浅拷贝,复制,注意直接赋值和copy的区别,直接赋值是引用对象(修改原对象,赋值的对像值也会相应地改变),使用函数是深拷贝父对象(修改原对象,不会改变父对象的值),子对象还是引用(与直接赋值效果一样),深拷贝是完全复制,原对象和复制的对象相互独立,浅拷贝是引用。
- Dict.deepcopy()深度拷贝
- Dict.fromkeys(swq[,val]),创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
- Dict.get(key,default=None)返回指定键的值,如果值不存在(访问的key不存在)则返回default的值
- Dict.has_key(key)判断字典中是否含有某个键,有返回true,没有返回false
- Dict.items()以列表返回可遍历的(键,值)元组数组[(),()]
- dict.keys()以列表返回一个字典的所有的键[‘’,’’]
- Dict.setdefault(key,default=None)如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值
- Dict.update(dict2),把dict2的键值对添加到dict中
- Dict.values(),以列表返回字典中的所有值
- Dict.pop(key[,default])删除字典给定键所对应的值,返回值为被删除的值,key值必须给出,否则返回default的值
- Dict.popitem()随机返回并删除字典中的一对键和值返回形式元组(’key’,’value’)
- 算术运算符,基本一致,注意a**b是指a的b次方。//是地板除
- 注意python不支持++和—运算
- 比较运算符<>和!=都表示不等于’
- 赋值运算符**=和//=
- 位运算符& | ^ !~ >> <<
- 逻辑运算符用关键字 and or not
- 成员运算符 in 类似php中的as(foreach),not in
- is 和is not判断两个标识符是不是引用自一个对象
- id()函数用来获取对象的内存地址
- 无限循环while var==1: while else在while条件为false时执行else
- pass语句时空语句,用作占位语句
- 数字:整型,长整型、浮点数、复数
- 数学运算的函数都在math模块和 cmath模块使用时需要引入 import math
- 随机数函数需要引入随机模块import random
- random.choice(seq)从序列元素中随机挑一个元素
- random.randrange([start,]stop[,step])从指定范围获取一个随机数,比较有意思的是python竟然在参数取值上不遵循最右原则
- Random.random()随机生成一个0到1之间的实数
- random.seed([x])
- Random.shuffle(lst)将序列的所有元素随机排序
- Random.uniform(x,y)随机生成一个实数在【x,y】之间
- 三角函数需要引入数学函数import math
- 数学常量 pi表示pai e表示自然常数
- 三引号类似php中的定界符
- Python 日期和时间
- 提供了很多处理时间和日期的函数,在使用之前需要引入模块import time
- 时间元组 九组数字组成 分别表示年 月 日 时 分 秒 一周的第几日 一年的第几日 夏令时
- 获取当前的时间戳使用time.time()
- 获取当前时间time.localtime()返回的是时间元组
- 格式化时间 time.asctime(time.localtime()) Thu Apr 7 10:05:21 2016 格式
- 格式化日期 time.strftime(‘%Y-%m-%d %H:%M:%S’,time.localtime)
- 将格式化字符串转换为时间戳time.mktime(time.strptime(str,”format字符串对应的时间戳个格式”))
- time.ctime([secs])作用相当于asctime(localtime([secs]))
- Time.gmtime([secs])接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0
- Time.mktime(时间元组),接受时间元组并返回时间戳
- time.sleep(secs)推迟调用线程的运行,secs指秒数
- Time.strftime(fmt[,时间元组])
- time.timezong属性,返回当地时区
- time.tzname属性
- Calendar模块
- 用来处理年历和月历
- import calendar使用前引入
- Calendar.month(2018,5)返回2018年五月的日历
- calendar.firstweekday( ),返回每周起始日期的设置,默认情况下首次在如模块返回0,即周一
- Calendar.isleap(year)瑞年返回true,否则返回false
- Calendar.leapdays(y1,y2)返回在y1 y2之间的瑞年总数
- Calendar.month(year,month,w=2,l=1)返回year年month月的日历
- Calendar.monthcalendar(year,month)返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始
- Calendar.monthrange(year,month)返回两个整数,第一个是该月的日期码就是一号星期几,第二个整数代表这个月有多少天
- Calendar.prcal(year,w=2,l=1,c=6)相当于print calendar.calendar(year,w,l,c)输出整年的日历
- Calendar.promonth(year,month,w=2,l=1)相当于print calendar.month(year,month,w,l)
- Calendar.setfirstweekdayu(weekday)设置每周的起始日期码
- calendar.timegm(时间元组)接受一个时间元组返回一个时间戳
- Calendar.weekday(year,month,day)返回给定日期的日期码,周几对应的码(编号0-6)
函数
- 函数代码块以def关键字开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自身变量必须放在圆括号中间。圆括号之间可以用于定义参数
- 函数的第一行语句可以选择性地使用文档字符串用于存放函数说明
- 函数内容以冒号起始,并且缩进
- return [表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于None。
- python函数的参数传递
- 不可变类型 作为参数传递过去时 传递的只是值,不会影响a对象本身
- 可变类型 字典,列表 则是真正传过去,修改后fun外部也会受影响
- python中一切皆对象,参数分为不可变对象和可变对象
- 关键字参数,在调用函数时使用了定义函数时使用的参数作为关键字,此时传入参数的顺序不重要
- 缺省参数是指在定义函数时设置了默认值例如
- def printinfo(name,age=35):
- …
- …
- 不定长参数def functionname([flags,] *var_args_tuple):
- *变量名会存放所有未命名的变量参数
- 匿名函数
- python使用lambda来创建匿名函数
- lambda的主体只是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑
- lambda函数拥有自己的命名空间,且不能访问自由参数之外或全局命名空间里的参数
- 语法 lambda [arg1[,arg2…]]:expression
模块
- 模块就是一个python文件
- 引入模块import 文件名
- 注意在引入模块时,不需要加后缀.py
- 可以同时引入多个,中间用逗号隔开
- 在使用引入模块的函数时,需要加上模块名使用 例如importname.func()
- 一个模块只会被导入一次,不管执行多少次import。类似php中include_once
- from…import语句
- 语法from modname import name1,name2…
- From modname import *
- 注意与直接import modname的区别,这种方法引入时不需要加模块名称
- Modname.func() 与func()的区别
- 理解为从一个模块中导入一个或几个函数
- 搜索路径
- 当前目录-》shell变量下PATHONPATH下的每个目录-》默认路径一般为/usr/local/lib/python/
- 命名空间
- 全局变量,局部变量
- 在函数内使用全局变量的时候需要用关键字global进行声明
- Dir()函数用来查看查询对象的属性和方法
- globals()函数和locals()函数
- 根据使用的地方不同,globals() locals()返回全局或局部命名空间里的名字
- 如果在函数内部调用locals()返回的是所有能在该函数里访问的命名
- 如果在函数内部调用globals()返回的是所有能在该函数里能访问的全局名字
- 两个函数返回的都是字典,所以能用keys()函数摘取
- reload()函数
- 当一个模块被导入到一个脚本,模块顶层代码只会被执行一次想要重新执行顶层代码使用本函数
- 语法:reload(module_name)
- 包
- 包就是一个文件夹但是该文件夹下必须有__init__.py 文件,可以为空,用来标识这是一个包
- 文件I/O
- Print() 打印字符
- raw_input() 从标准输入读取一个字符串
- Input() 与raw_input()函数基本一致,但是input函数能够接受表达式
- 打开和关闭文件
- open()函数 file object=open(file_name[,access_mode][,buffering]),第二个参数决定打开方式
- file对象的属性
- file_object.closed 返回true文件被关闭,否则返回false
- file_object.mode 返回被打开文件的访问模式
- File_object.name 返回文件的名称
- file_object.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true
- file对象的方法
- close()方法 关闭文件 语法 file_object.close() php fclose($handle)
- file.flush()刷新文件内部缓冲
- file.fileno()返回一个文件描述符
- file.isatty()如果文件链接到一个设备终端返回true,否则返回false
- file.next()返回文件的下一行
- file.read([size]) 从文件读取制定的字节数,未指定或为负则读取所有
- file.readline([size])未指定读取整行,指定读取size字节 包含“\n”,
- file.readlines([sizehint])读取所有行并返回列表,若给定sizeint>0,则是设置一次读取多少字节,这是为了减轻读取压力
- file.truncate([size])截取文件,截取的字节通过size指定。默认为当前文件位置
- file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
- file_object.write(str),该方法可以将任何字符串写入一个打开的文件
- 注意该方法不会在字符串结尾添加换行符“\n”
- Read([count])方法 从一个打开的文件中读取一个字符串
- file_object.read()从打开的文件中读取一个字符串,参数count是读取的字节数,不指定则尽可能的读取更多内容,很可能是读到文件结尾
- 文件定位 tell() seek(offset[,from])
- file_object.tell() 返回当前位置
- file_object.seek(offset[,from]),改变当前位置,offset表示要移动的字节数,from表示开始移动的参考位置,0表示开头作为参考位置,1表示当前位置作为参考值,2表示文件末尾作为参考值
- 注意:在write内容后直接read文件输出为空,是因为指针已经在文 件末尾
- 解决方法:关闭文件,重新打开。使用seek函数将指针移到起始位置
- with 语句的引入
- 为保证能正确关闭文件且语言更加简洁
- with open(‘file_name’,’r’) as f
- Print f.read();
- 异常处理
语法:Try:
except 【错误类别】【,错误类别2】…:
else:
在try中出错,except捕捉到错误。没有错误执行else
try-finlly是无论是否出现异常都会执行finlly内容
使用raise 触发异常
raise Exception(“some info”);
os模块
- import os引入模块
- Os.rename(current_file_name,new_file_name)文件重命名
- Os.remove(‘filename’)删除文件
- Os.mkdir(“newdir”)在当前目录下创建新目录
- Os.chdir(‘newdir’) 改变当前目录
- Os.getcwd()显示当前的工作目录
- Os.rmdir(‘dirname’) 删除目录