最近对于Python开始有了些逐渐的了解以及深入学习,学习相关网站均来自廖学峰廖老师的个人官方网站,文末进行一个传播分享,觉得是
Python入门级最好的学习方式,相关练习题也很赞,当然,对于这么多知识点是不可能一下子全部吸收的,所以最好是结合大数据例子以及
对项目的操作熟练程度来提高对知识的吸收。
以下为个人整理的一些相关比较重要的知识点,并会随着知识的深入进行一些适当的更新:
1.除法中,’/’计算所得结果为浮点数,’//’计算结果为整数
print(10/3,10//3)
计算所得结果为
3.3333333333333335 3
2.网络传输采用比特流,所以若在网络上传输或者保存在磁盘上,就需要把str变为以字节为单位的bytes
3. break和continue必须配合if语句使用,但不可多用且不建议使用,会造成代码分支过多,影响阅读性及执行性能
4. input()函数返回数据类型为str,不要引用错误
5.判断键值对中的key是否存在的两种方法
name={'Mary':18,'Sara':20}
#第一种方法,采用in判断
'Mike' in name #False
#第二种方法,使用get()函数
name.get('Mike') #None
name.get('Mike',-1) #-1
6. str,tuple是不可变对象,list是可变对象,set存放不可变对象
针对str的replace方法说明
a='abc'
a.replace('a', 'A')
print(a)
得到输出结果仍为’abc’
这是因为,a是变量,而’abc’才是字符串对象,a指向的对象的内容是’abc’,调用方法replace是作用在字符串对象’abc’上的,是创建了一个新字符串’Abc’并返回,变量a仍指向原有的字符串’abc’
7.函数可以返回多个值,但其实是返回一个tuple
def move(a,b):
return a,b
x,y=move(2,7)
print(x,y) #2 7
r=move(2,7)
print(r) #(2, 7)
8.数据类型检查可用函数isinstance()实现
i = 'a'
print(isinstance(i,(int,float))) #False
9.默认参数必须指向不可变对象,如str,None ··· 这样在多任务环境下同时读取对象不需加锁
10.可变参数将参数自动组装为一个tuple,关键字参数则在内部自动组装为一个dict
11.命名关键字参数的存在是为了限制参数名的同时提供默认值
12.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。解决递归调用栈溢出的方法是通过尾递归优化,即在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。
#普通阶乘递归写法
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
#尾递归阶乘写法
def fact(n):
return fact_iter(n, 1)
def fact_iter(num, product):
if num == 1:
return product
return fact_iter(num - 1, num * product)
13.汉诺塔 简单实现
def move(n, a, b, c):
if n==1:
print(a,"-->",c)
return
move(n-1, a, c, b)
move(1, a, b, c)
move(n-1, b, a, c)
move(3, 'A', 'B', 'C')
输出结果
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C