1.python属于强类型,动态类型的语言

2.python并不是单纯属于编译型语言或者解释型语言,他是先将文件编译成字节码,之后再有字节码进行解释执行,具体流程如下所示:

 

3.python的一些快捷键

 

4.python的一些学习路线如下图所示:

 

 

 

 5.运算符

加法运算符:+,减法运算符:-,乘法运算符:*,幂运算符:**,除法运算符:/,整除运算符(只给出除出来的整数)://,求模运算符, 求余运算符:%
在python2点几的版本中,有可能会出现乱码现象,应该在最开头加上此语句:# _*_ coding:utf-8 _*_
is在python中属于唯一标识,即当两个变量在内存中的地址是一样的时候,他们才为true,否则false,例如,a=1,b=1,则a is b得出的结果为true,若a=【1】,b=【1】,他们两的标识其实是不一样的,所以他们为false
注意:在python中有唯一链状比较运算符:可以直接写成print(1<a<3),假设a为2,则结果为true
print(0 and True)
print(1 and 3)
print(0 or False or 6)这种情况下当系统能识别出结果在哪个值就输出那个值,例如第一个条件是and,并且第一个值为0,则该结果一定为假,所以在0上已经判别出来结果,输出该值:0,第二个也是and,第一个值1为真,此时还不确定结果是真是假,则需要判定第二个值,第二个值也为真,输出第二个值:3,同理第三个条件是or,只要有一个为真就是真,到第三个值才最终确定该结果是真的,所以输出改值为6

 6.在python3中input输入的都是字符串,比如123是看成字符串来进行处理的,如果想它当作代码来进行处理的话需要用到eval()函数,即输入的是什么类型的输出就是什么类型,操作如下所示

 

 

 

 7.

# 格式化输出
name = 'sz'
age = 18
# 我的名字是xxx, 年龄是xxx
print("我的名字是%s, 年龄是%d"%(name, age))
print("我的名字是{0}, 年龄是{1}".format(name, age))

8.python输出到文件中操作:f=open("a.txt","w")    print("abc",file=f)该语句的意思是将abc写入到a.txt文件中,如果没有该文件,就自动创建该文件

9.

 

 

10.break是打断本次循环,跳出整个循环;continue是结束本次循环,继续执行下次循环

11.加法运算符:+;减法运算符:-;乘法运算符:*;幂运算符:**;除法运算符:/;整除运算符(即取整数,不采用四舍五入法,直接小数点前面是几就是几)://;求模运算符, 求余运算符:%;

12.range(1,100)输出的是1到99

13.print("%d * %d = %d" % (n, num, n * num), end="\t"),此时表示的是end是输出一个值后面是什么,而/t表示是一个空格即tab

   九九乘法表

for i in range(1, 10):
for j in range(1, i+1):
print("%d * %d= %d" % (j, i, j*i), end="\t")
print("")

14.pass表示的是当前循环里还不知道要写什么,空着会报错,但是写pass则可以直接跳过等之后再写不会出错

15.二进制:0b,八进制:0o,十六进制:0x,科学计数法:1.682e2=1.682 x 10^2=168.2

16.进制转换

 

十进制转换为二进制,八进制和十六进制,根据整数倒取余的原则,当十进制为18时,二进制为0a010010,八进制为0o22,十六进制为0x12,二进制为bin,八进制为oct,十六进制为hex

 17.函数,如果用的函数不是python中的内建函数,则开始使用时需要引用该函数,已math模块函数为例,开始引用时语句为import math,之后使用该模块函数中的函数格式为math.函数名称(参数),具体使用方法以及其中有哪些函数如下图所示:

 18.随机函数

 

 三角函数

 在字符串前面加“r”则表示可以将该字符串原封不动的打印出来,如“aaa /n ss”,系统一般打印出来的是第一行是aaa,第二行是ss,但是如果想将/n也打印出来,则在该字符串前面加一个r即可,如r“aaa /n ss”

19.获取字符串,a[起始:结束:步长] 

 20.ljust原字符串靠左,后面进行填充,只能填充一个字符串,原来字符串其实不变,lstrip仅仅是移除左侧的字符,rstrip是移除右侧的字符,此部分内容很重要,可以参考字符串函数操作文档或者“Python常用数据类型操作-字符串.py”

 

 

 

  

查找计算
转换
填充压缩
分割拼接
判定
使用方式
小旗子的代表是内建函数, 直接使用
不带小旗子的属于对象方法
对象.方法(参数)
len
作用
计算字符串的字符个数
语法
len(name)
参数
字符串
返回值
整型
字符个数
find
作用
查找子串索引位置
语法
find(sub, start=0, end=len(str))
参数
参数1-sub
需要检索的字符串
参数2-start
检索的起始位置
可省略, 默认0
参数3-end
检索的结束位置
可省略, 默认len(str)
返回值
找到了
指定索引
整型
找不到
-1
注意
从左到右进行查找
找到后立即停止
rfind
功能使用, 同find
区别
从右往左进行查找
index
作用
获取子串索引位置
语法
index(sub, start=0, end=len(str))
参数
参数1-sub
需要检索的字符串
参数2-start
检索的起始位置
可省略, 默认0
参数3-end
检索的结束位置
可省略, 默认len(str)
返回值
找到了
指定索引
整型
找不到
异常
注意
从左到右进行查找
找到后立即停止
rindex
功能使用, 同index
区别
从右往左进行查找
count
作用
计算某个子字符串的出现个数
语法
count(sub, start=0, end=len(str))
参数
参数1-sub
需要检索的字符串
参数2-start
检索的起始位置
可省略, 默认0
参数3-end
检索的结束位置
可省略, 默认len(str)
返回值
子字符串出现的个数
整型
replace
作用
使用给定的新字符串 替换原字符串中的 旧字符串
语法
replace(old, new[, count])
参数
参数1-old
需要被替换的旧字符串
参数2-new
替换后的新字符串
参数3-count
替换的个数
可省略, 表示替换全部
返回值
替换后的结果字符串
注意
并不会修改原字符串本身
capitalize
作用
将字符串首字母变为大写
语法
capitalize()
参数

返回值
首字符大写后的新字符串
注意
并不会修改原字符串本身
title
作用
将字符串每个单词的首字母变为大写
语法
title()
参数

返回值
每个单词首字符大写后的新字符串
注意
并不会修改原字符串本身
lower
作用
将字符串每个字符都变为小写
语法
title()
参数

返回值
全部变为小写后的新字符串
注意
并不会修改原字符串本身
upper
作用
将字符串每个字符都变为大写
语法
upper()
参数

返回值
全部变为大写后的新字符串
注意
并不会修改原字符串本身
ljust
作用
根据指定字符(1个), 将原字符串填充够指定长度
l
表示原字符串靠左
语法
ljust(width, fillchar)
参数
参数1-width
指定结果字符串的长度
参数2-fillchar
如果原字符串长度 < 指定长度时
填充过去的字符
返回值
填充完毕的结果字符串
注意
不会修改原字符串
填充字符的长度为1
只有原字符串长度 < 指定结果长度时才会填充
rjust
作用
根据指定字符(1个), 将原字符串填充够指定长度
r
表示原字符串靠右
语法
rjust(width, fillchar)
参数
参数1-width
指定结果字符串的长度
参数2-fillchar
如果原字符串长度 < 指定长度时
填充过去的字符
返回值
填充完毕的结果字符串
注意
不会修改原字符串
填充字符的长度为1
只有原字符串长度 < 指定结果长度时才会填充
center
作用
根据指定字符(1个), 将原字符串填充够指定长度
center
表示原字符串居中
语法
center(width, fillchar)
参数
参数1-width
指定结果字符串的长度
参数2-fillchar
如果原字符串长度 < 指定长度时
填充过去的字符
返回值
填充完毕的结果字符串
注意
不会修改原字符串
填充字符的长度为1
只有原字符串长度 < 指定结果长度时才会填充
lstrip
作用
移除所有原字符串指定字符(默认为空白字符)
l
表示从左侧开始移除
语法
lstrip(chars)
参数
参数-chars
需要移除的字符集
表现形式为字符串
"abc"
表示,"a"|"b"|"c"
返回值
移除完毕的结果字符串
注意
不会修改原字符串
rstrip
作用
移除所有原字符串指定字符(默认为空白字符)
r
表示从右侧开始移除
语法
rstrip(chars)
参数
参数-chars
需要移除的字符集
表现形式为字符串
"abc"
表示,"a"|"b"|"c"
返回值
移除完毕的结果字符串
注意
不会修改原字符串
split
作用
将一个大的字符串分割成几个子字符串
语法
split(sep, maxsplit)
参数
参数1-sep
分隔符
参数2-maxsplit
最大的分割次数
可省略, 有多少分割多少
返回值
分割后的子字符串, 组成的列表
list 列表类型
注意
并不会修改原字符串本身
partition
作用
根据指定的分隔符, 返回(分隔符左侧内容, 分隔符, 分隔符右侧内容)
语法
partition(sep)
参数
参数-sep
分隔符
返回值
如果查找到分隔符
(分隔符左侧内容, 分隔符, 分隔符右侧内容)
tuple 类型
如果没有查找到分隔符
(原字符串, "", "")
tuple 类型
注意
不会修改原字符串
从左侧开始查找分隔符
rpartition
作用
根据指定的分隔符, 返回(分隔符左侧内容, 分隔符, 分隔符右侧内容)
r
表示从右侧开始查找分隔符
语法
partition(sep)
参数
参数-sep
分隔符
返回值
如果查找到分隔符
(分隔符左侧内容, 分隔符, 分隔符右侧内容)
tuple 类型
如果没有查找到分隔符
(原字符串, "", "")
tuple 类型
注意
不会修改原字符串
从右侧开始查找分隔符
splitlines
作用
按照换行符(\r, \n), 将字符串拆成多个元素, 保存到列表中
语法
splitlines(keepends)
参数
参数-keepends
是否保留换行符
bool 类型
返回值
被换行符分割的多个字符串, 作为元素组成的列表
list 类型
注意
不会修改原字符串
join
作用
根据指定字符串, 将给定的可迭代对象, 进行拼接, 得到拼接后的字符串
语法
join(iterable)
参数
iterable
可迭代的对象
字符串
元组
列表
...
返回值
拼接好的新字符串
isalpha
作用
字符串中是否所有的字符都是字母
不包含该数字,特殊符号,标点符号等等
至少有一个字符
语法
isalpha()
参数

返回值
是否全是字母
bool 类型
isdigit
作用
字符串中是否所有的字符都是数字
不包含该字母,特殊符号,标点符号等等
至少有一个字符
语法
isdigit()
参数

返回值
是否全是数字
bool 类型
isalnum
作用
字符串中是否所有的字符都是数字或者字母
不包含该特殊符号,标点符号等等
至少有一个字符
语法
isalnum()
参数

返回值
是否全是数字或者字母
bool 类型
isspace
作用
字符串中是否所有的字符都是空白符
包括空格,缩进,换行等不可见转义符
至少有一个字符
语法
isspace()
参数

返回值
是否全是空白符
bool 类型
startswith
作用
判定一个字符串是否以某个前缀开头
语法
startswith(prefix, start=0, end=len(str))
参数
参数1-prefix
需要判定的前缀字符串
参数2-start
判定起始位置
参数3-end
判定结束位置
返回值
是否以指定前缀开头
bool 类型
endswith
作用
判定一个字符串是否以某个后缀结尾
语法
endswith(suffix, start=0, end=len(str))
参数
参数1-suffix
需要判定的后缀字符串
参数2-start
判定起始位置
参数3-end
判定结束位置
返回值
是否以指定后缀结尾
bool 类型
补充
in
判定一个字符串, 是否被另外一个字符串包含
not in
判定一个字符串, 是否不被另外一个字符串包含

 21.字符串是不可变的类型,也就是说不能改变里面的数据,但是列表是可以变的,通常用【】有序的可变的元素集合,列表里可以存放不同的数据类型

 22.列表推导式,[表达式 for 变量 in 列表],[表达式 for 变量 in 列表 if 条件]

 

 

 23.列表的一些常用操作很重要,可以看常用操作或者“Python常用数据类型操作-列表-常用操作.py”

24.append和extend之间的区别

 

 

 25.各个类型实例

字符串:“abc”

列表:["a", "b", "c"]

元组:(“a”,“b”)

集合:{a,b}

字典:{0:a,1:b}

26.字符串有增删改查操作,列表有增删改查操作,字典有增删改查操作,集合有增删查操作不能修改,元组不能增删改操作,可以查询。字符串,列表,元组都可以通过+进行拼接。字符串,列表,元组都是有序的,字典时无序的,无序的, 可变的键值对集合

27.元组:有序的不可变的元素集合,和列表的区别就是, 元组元素不能修改,列表可以转换成元组,但是如果元组里面只有一种元素,括号里面应该加逗号,不然系统会识别成其他类型加一个括号强调的意思,例如(1,)(“a”,)这样系统才会识别成是元组,元组不能增删改操作,可以查询,t[4:1:-1]表示的是从第五位到第二位进行反转

元组的获取

 28.字典{key:value},字典里的key是不可变的,一个字典中不能有多个相同的key,一个字典中每个key都要是不同的

 29.集合分为可变集合和不可变的哈希类型,而列表,字典是可变的,如果集合中的元素值出现重复, 则会被合并为1个

 30.调用的参数是实参,被调用的参数是形参,如实参为a(num),形参为def a(num)

31.不定长参数:def 函数名(*args): 表示的是元组,为什么用元组而不用列表或是其他的,因为元组是有序的并且元组是不可变的,展示如下:

 

 

 def 函数名(**dic): 表示的是字典

 

 

 

 

 32.装包和拆包

def test(*args):
# print(args) args就是装包的过程,因为本来输入的值是1,2,3,4,但是使用*args他就是将参数变成一个字典即(1,2,3,4)一个字典表示的是一个,所以他将四个变成了一个,也就是说args变成了
                   (1,2,3,4)
#
# # 拆包,由于args变成了一个字典,也就是一个值,现在拆包就是将原有的四个拆出来,即再次使用一次*args就将字典转化成了原来的四个值1,2,3,4,也就是拆包的过程
# print(*args)
# # mySum((1, 2, 3, 4))
# # mySum(args[0], args[1], args[2], args[3])
#
# mySum(*args)
#
# test(1, 2, 3, 4)
----------------------------
def test(**kwargs):
# print(kwargs)同理可得该过程是装包操作,使用**来进行装包,kwargs表示的是一个字典{a:1,b:2}
#
# # 拆包操作,同理可得该过程是一个拆包的过程,使用**来进行拆包,**kwargs表示的是将值给拿出来,即1,2
# # 应该使用 ** 进行拆包操作
# # print(**kwargs)
# # a=1, b=2
# mySum(**kwargs)
# # mySum(a=1, b=2)
#
# test(a=1, b=2)

33.值传递不会改变原来的值,但是引用传递会改变原来的值,在Python当中, 你没得选, 只有引用传递(地址传递),但是如果数据类型是可变类型, 则可以改变原件,如果数据类型是不可变类型, 则不可以改变原件,比如列表和字典是可变的,元组和数值是不可变的

34.函数返回值:当我们通过某个函数, 处理好数据之后, 想要拿到处理的结果

1. return 后续代码不会被执行

2. 只能返回一次

3. 如果想要返回多个数据, 可先把多个数据包装成一个集合, 整体返回:列表,元组,字典。。。

35.偏函数的使用

 

 36.高阶函数:当一个函数A的参数, 接收的又是另一个函数时, 则把这个函数A成为是"高阶函数",如sorted函数

 

 37.匿名函数

 

 38.闭包:在函数嵌套的前提下,内层函数引用了外层函数的变量(包括参数),外层函数, 又把 内层函数 当做返回值进行返回

 

 

# def test():
# a = 10
# def test2():
# print(a)
#
# return test2
#
#
# newFunc = test()
# newFunc()
分析函数:由于test()函数返回值返回的是test2()这个函数,所以将test()的返回值赋值给newFunc,之后再调用newFunc()函数,也就是调用test2()这个函数,他输出的是a的值也就是10

39.重要:返回函数时返回的是函数本身,并不是返回调用函数,也就是说return 函数,函数后面不带()

 40.装饰器:一般都是这样的固定格式,装饰器里面有一个闭包,引用装饰器的时候又一个@,装饰器是立即执行的,只要写了一个@符号就会执行

# 1. 函数名字不能发生改变
# 2. 函数体内部的代码不能发生改变
def check(func):
def inner():
print("登录验证操作....")第一个打印出来
func()
return inner

@check 这个意思相当于fss = check(fss)这句话,即func()==fss()
def fss():
    print("发说说")第二个打印出来

通用装饰器的写法

可以只使用一个装饰器但是根据不同的字符可以自由切换,具体操作如下

41.生成器

1.生成器表达式,把列表推导式的[] 修改成  (),(i for i in range(1, 10000000) if i % 2 == 0)

2.生成器函数,函数中包含  yield语句,yied, 可以去阻断当前的函数执行, 然后, 当使用next()函数, 或者, __next__(), 都会让函数继续执行, 然后, 当执行到下一个 yield语句的时候, 又会被暂停

42.递归函数:函数A内部, 继续调用函数A,传递,回归,有传递, 一定要有回归,否则, 就是无限的循环调用

 

 43.局部变量和全局变量:nonlocal和global的用法

 

 

 

44. 文件操作