Python
2019-01-27 16:08:02 0 举报
AI智能生成
python的学习框架,持续更新
作者其他创作
大纲/内容
文件操作
with
with open("文件名",mode=打开模式,encoding = "utf-8") as f:
打开模式
r rb r+
r
以只读的方式打开,不可以进行修改
rb
以只读的方式打开非文本文件,以字节显示
r+
以读写方式打开 先读后写
w wb w+
w
以写的方式打开,如果文件不存在则创建,如果存在那么先覆盖再写
wb
以写的方式打开非文本文件,以字节显示
w+
以写读方式打开 先覆盖写再读
a ab a+
a
以附加的方式打开,如果文件则报错,如果存在那么再文件末尾进行附加
ab
以写的方式打开非文本文件,以字节显示
a+
以附加写读方式打开 先附加写再读
命令
tell
按照字节数返回当前光标所在位置
seek
指定光标移动到指定位置
seek(n)
n同样是字节数
seek(0,n)
seek(0,0) 移动到文件头部
seek(0,2) 将光标移动到文件尾部
flush
将写入内容刷新到磁盘上
colse
关闭文件
read
read()将文件从头到尾读下来,返回字符串
readline
只读当前光标所在行之后的内容
readlines
以列表的形式,将每一行作为列表的一个元素,返回列表
深浅拷贝
赋值
用=等于号给一个变量赋值,会得到一个新的变量,<br>但是将一个复杂类型(比如列表)的变量赋值给另一个变量,那么修改其中一个变量,另一个变量也会变
注意: a = [1,2,3]<br> b = a<br> a = "hello"<br> b还是[1,2,3]
浅拷贝
如果是可变数据类型,只会复制一层,如果是更深层,那么一个修改深层元素,另一个也会改,他们公用一个深层地址
注意: a = [1,2,["a"]]<br> b = a<br> a[-1] = "hello"<br> b还是[1,2,["a"]]
深拷贝
将复制的者全部开辟一块新的空间,然后把被复制的内容放进来,这样无论改几层元素,另一方不会受到影响
函数
函数初识
函数定义
将代码通过函数封装起来,以后随时用,随时调用即可
函数的语法
def fun(args1,args2....):<br> 函数体
函数调用
fun()就实现了对函数的调用执行
函数的执行
传参过程
形参
在函数定义所描述的就是形式参数
实参
在函数调用的过程中,把值传递给参数,那么这个值就是实参
传参
我们将实参传递给形参的过程叫做传参
参数类别
位置参数
定义
书写形参的过程不加等号的一个单纯的不加引号的字母组合我们叫做位置参数
表示方法
a,b,c,d等
动态位置参数
定义
置于位置参数之后,把位置参数之后的所有位置实参的值全部接收
使用
表示方法
*args
在形参这里,*args将传递进来的实参聚合成元组
在函数体中*args又会将聚合成的元组打散
默认参数
定义
在书写形参的时候加上了等号,并且给等号左边的形参赋值,那么这类参数叫做默认参数
使用
表示方法
def fun(a,b,c=1,d="hello Wolrd"):pass c和d就是默认参数
动态默认参数
定义
将动态默认参数放在书写形参的最后
表示方法
**kwargs
在形参这里,**kwargs将传递进来的实参聚合成字典
在函数体中,*kwargs又将聚合成的字典打散成只剩下字典的key
形参定义顺序
位置参数,动态位置参数,默认参数,动态默认参数
函数的返回值
return关键字可以返回任何类型的值
函数名使用
函数名可以作为参数传递给函数
函数名可以当做值赋给变量
函数名可以作为返回值
函数名可以当做元素放在容器里
闭包
迭代器
生成器
基础数据类型
整型
定义: 仅仅由数字组成且不带单引号,双引号等。用0-9任意组合的数字表示
关键字: int
用法: 可以使用算术运算符进行运算
类型转换
转成字符串:a = 1 a = str(a)
注意: 0不表示空,可以表示假,其他非0的数字表示为真,负数也是整型<br> 整型是<b><i>不可变,可hash,不可切片,不可迭代</i></b>的数据类型
布尔型
定义: 判断一个逻辑的对错的结果就是布尔类型中的真和假,其中True表示真,False表示假
关键字: bool
用法: 往往通过bool值来控制循环的流程
注意: 比较两个数字的大小结果也为bool类型<br> None也可以表示假<br> 波尔类型是<b><i>不可变,可hash,不可切片,不可迭代</i></b>的数据类型
比如空字符,空列表,空字典等<br>都能在if语句中表示假<br>非空字典则表示真<br>Eg: if "a": <br> if []:
字符串
定义: 用单引号引起来的总是表示为字符串
关键字: str
用法: 字符串可以进行加法运算,表示字符串的拼接<br> 字符串和数字相乘表示字符串的就是字符串重复叠加在拼接
方法: <font color="#ffffff"> </font>,<b><i><font color="#662c90">swapcase</font>,</i></b>replace,capitalize,upper,lower,strip,split,title,count,find,index,startwith,isdigit等<br>
转换类型
转成数值
a = '1234' a = int(a)
转成列表:
a = 'abc' a = list(a)
['a', 'b', 'c']
<p><b><i><font color="#662c90">a = 'abc' a= a.split()</font></i></b></p>
['abc']
转成集合: a = "abc" a = set(a)
转成元祖: a = "abc" a = tuple(a)
注意: 字符串是最常见的数据类型<br> 字符串可以通过下标和切片来取值<br> 字符串<b style="font-style: italic;">是不可变,可hash,支持切片,可迭代</b>的数据类型
列表
定义: 用[中括号]把内容包裹起来的数据类型称为列表,通常用在存放单维类型的值,比如姓名名单,成绩单
关键字: list
用法: 列表支持同类型加法,支持和数字的乘法
方法: <i><b><font color="#662c90">append,extend,clear,sort,reverse,copy</font>,</b></i>count,pop,index,remove
转换类型
转成字符串: a = ["a","b"] a = "".join(a)
转成集合: a = ["a","b"] a = set(a)<br>
转成元祖: a = ["a","b"] a = tuple(a)
注意: 列表<b><i>可变,不可hash,支持切片,可迭代</i></b>的数据类型
元组
定义: 用(圆括号)把要存的内容包裹起来的数据类型成为元组,通常存放不经常变动的内容
关键字: tuple
用法: 元祖支持同类型加法,支持和数字的乘法
方法: <b><i>index,count</i></b>
转换类型
转成字符串: a = ("a","b") a= "".join(a)
转成集合: a = ("a","b") a = set(a)<br>
转成列表: a = ("abc") a = list(a)
注意: 元祖<b><i>不可变,可hash,支持切片,可迭代</i></b>的数据类型<br> (1)表示数字1 ,("a")表示字符串<br><b><i> (1,) 、("a",) 、 ()、 (,) 这四个都可以表示元祖</i></b>
集合
定义: 用{大括号}把要存的内容包裹起来的数据类型成为集组,通常想要获取不重复的值,可以使用集合
关键字: set
用法: 集合不支持加法和乘法,天然去重,<b><i>并且无序</i></b>
方法: add ,pop,remove,updae
运算
并集: |
交集: &
差集: -
对称差集: ^
注意: {}无法表示集合,这表示一个空字典<br> 想要初始化一个空集合a = set()
字典
定义: 用{大括号}要要存放的<i style="font-weight: bold;">键值对 </i>依次放入字典中,通常用来存放多维类型的值.通过字典的键去找值提升了访问速度
关键字: dict
方法: copy,pop,popitem,item,values,keys,<i><b>get,setdefault,update,fromkeys</b></i>
注意: 字典可以转成列表(得到的列表只是字典的键),通过list工厂函数,但是其他类型不可以转成字典
NoneType
定义: 用None关键字表示
变量
命名规范
变量只能由数字字母下划线表示<br>变量开头字符不能是数字<br>变量大小写敏感<br>变量要具体可描述性<br>变量不要使用关键字命名<br>变量推荐写法:下划线表示
基础数据类型补充
是否可变
可变的数据类型都支持copy方法
可变:列表,集合,字典
不可变:数字,字符串,布尔值,元祖
是否支持切片
支持:字符串,列表,元祖
不支持:数字,布尔值,字典,集合
是否可以hash
可hash的就是不可变的数据类型
可hash:数字,字符串,元祖,布尔值
不可hash:列表,集合,字典
是否可以迭代
解构
运算符
逻辑运算符
and or not
成员运算符
in not in
赋值运算符
=, +=,-=,*=,/=,**=,%=
比较运算符
> ,< , >= ,<= , != , ==
算术运算符
+ ,-,*,/,**,%
内置函数
len
len()可以求得可变数据类型的总成员个数
range
将(数字)转换成一个可迭代对象
id
id(对象)可以查到对象的内存地址
isinstance
isinstance(变量,类型) 可以判断对象是否是相关类型
dir
查看当前变量的可用方法
print
print(内容) 可以将内容打印到屏幕上
open
通过open可以讲一个文件打开
type
type(对象) 查看对象的相关类型
format
a = "zhangsan"
print(f"name:{a}")
print("name:{}".format(a))
print("name:%s"%(a))
iter
iter(可迭代对象) 可以将可迭代对象变成迭代器
locals/globals
查看局部/全局的变量内容
逻辑结构
for
for 条件
当满足for条件时,程序进入循环体,当在循环过程中无法满足for条件,那么正常退出
for<br>else
当程序没有进入for循环,或者进入for循环并且没有通过break方式退出循环体的情况下,进入else中
while
while 条件
当while条件为真,那么会进入循环体,当循环过程中不再满足while条件,则正常退出while
while <br>else
当程序没有进入for循环,或者进入for循环并且没有通过break方式退出循环体的情况下,进入else中
continue
在循环体中遇到continue,那么终止当前循环,跳到下一次循环
break
在循环体中遇到break,那么终止循环,跳出循环体
if
if 条件
当if条件满足,则进入if当中
if 条件<br>elif 条件
if和elif只能执行一个
if 嵌套<br>if 条件<br> if 条件<br>
if 条件<br>else
else表示上述所有条件均不满足,则会进入else当中
字符集
ASCII
总共能256个元素,包含键盘上128个字符和128无法通过键盘表示的字符,所以中文无法显示
python2的默认编码集
unicode
收录了全世界所有国家的语言,每个字符都统一用一致的2个或者4个字节来存储
utf-8
为了提高Unicode存储和传输性能,产生了UTF-8,它是Unicode的一种实现形式,英文:1个字节, 汉字:3个字节
gbk
兼容gb2312,包含了所有中文,存储一个汉字只需要2个字节
代码块<br>小数据池
代码块
定义:
执行同一个代码块时,遇到初始化对象的命令时,他会将初始化的这个变量与值存储在一个字典中,<br>在遇到新的变量时,会先在字典中查询记录,<br>如果有同样的记录那么它会重复使用这个字典中的之前的这个值
适用范围
int(float),str,bool
小数据池<br>(了解)
定义
小数据池是针对不同代码块之间的缓存机制
适用范围
int(float),str,bool
0 条评论
下一页