Python基础篇
Posted sutcoderhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础篇相关的知识,希望对你有一定的参考价值。
Python基础篇
1.python中在使用while时,可以与else一起使用。
即当条件不满足时不是跳出循环,而是执行else后面的语句后再跳出循环;而else与谁并列要思考,如果是整个循环结束后执行语句,则else就要与while并列,如果是当前判断条件不满足执行语句,要与if并列.
2.python中不用声名变量,可以直接使用
3.python中的数据类型有
数字:int double 等
字符串:用“” ‘’ 表示。单个字符也默认为字符串。字符串可索引和单个提取。
元组:特殊的字符串,用()
列表:用[]
集合:用{}或set()
字典:字典和以上差别较大,多了一个关键字的定义:用d = {key1 : value1, key2 : value2 }表示
有序集合:list,tuple,str和unicode;
无序集合:set
无序集合并且具有 key-value 对:dict
4.python中break与continue的区别
- 当循环遇到break时,条件不满足不往下执行底下任何代码块,直接跳出循环;
- 当循环遇到continue时,条件不满足时只是跳出下面剩余语句,然后接着执行循环
5.如果if可以看作是二分法执行的话,那么循环可以看作是数据变更然后重复去判断一件事
6.Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块
(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问。
7.range(start, stop[, step])
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
8.要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
9.python胶水语言 想用C / C++ 拿过来直接一起运行
- 框架(Framework):Python没有官方框架,框架很多。
- 框架是前人经过不断尝试和探索而设计出的一种适合于当下应用场景的整个或部分系统的可重用设计。我们可以再次基础上进一步开创新的东西
10.random模块,随机产生数字模块
- randint随机产生指数的方法。
11.异常处理
当程序执行到某个位置时一旦出现问题,整个程序会直接挂掉,为了防止因几行代码出现问题导致整个程序不往下执行,
1).我们引入了异常处理,也就是把可能出现异常的程序放到try里,如果出现异常,程序会接着往下走,最后把异常结果输出。
try: 可能出现异常的语句 except xxxError: print() 如果出现上述xxxError异常,返回什么
2).但是这样的话就需要我们提前判断可能会出现的异常,因为不符合xxx并不会返回。
所以我们可以改写,except exception: 这样改写之后,只要出现异常,就会返回,不论该异常是什么类型。
try:
可能出现异常的语句
except exception as ret:
print(ret)
这样写完之后,一旦出现异常可以自动输出异常,不用定义。
3).引入else,finally:
try:
(可能出现异常的语句)
except exception as ret:
print(ret)------------捕获异常,如果出现异常最后返回错误。
else:
(没有异常才会执行的功能)
finally:
(不论有没有异常,最终都必须执行的功能)
4).异常是可以传递的,意思就是说你捕获的异常中如果调用了函数,如果被调用的函数出现了异常,即使该函数中没有用try捕获异常,但它会把异常的消息传递给接口,而接口会被try捕获。综上,在调用的函数中出现了异常,也会被捕获。
5).我们也可以人为的抛出异常---用作判断用户输入
- 具体方法是可以定义一个类,让他继承exception,然捕获异常中添加if判断,当条件满足时用raise+刚刚定义的类返回刚刚定义异常,
这时候该异常会被捕获到,当条件不满足时,直接没有异常往下执行。 - 而使用raise 后面不接?任何异常,会将此时的异常重新抛回给系统,让系统该怎么处理怎么处理
12.if用做判断时,空字符串 空列表 空元组 空字典 0 None 都表示 假!
13.pip python管理py模块的工具
14.字符串逆序:str(::-1)
15.format使用
- 输入:print(‘站点列表 {0}, {1}, 和 {other}。‘.format(‘Google‘, ‘Runoob‘,other=‘Taobao‘))
- 输出:站点列表 Google, Runoob, 和 Taobao。
16.对一个列表增删该查
- 增:expend 追加;insert(位置,元素);extend(列表)将一个列表追加到另一个列表后面
- 删:pop(),默认删最后一个,括号里可以加下标;remove(内容),根据内容删;del name[下标] 根据下标删
- 改:name[]根据下标赋新值
- 查:用in
17.对一个字典增删改查
- 增/改:直接dict[key]=
- 删:del dict[key]
- 查:get(key) 直接获取value
18.合并两个字典的四种方式
- 创建一个空字典,分别遍历添加
- 借助字典的dict(d1, **d2)方法
- 创建一个空字典,借助字典的update()方法
- 借助dict(d1.items() + d2.items())的方法
19.静态方法既可以用类调用,也可以用对象调用
20.列表倒置用reverse
21.map与lambda配合使用,求一组数据的平方
map(lambda x: x ** 2, [1, 2, 3, 4, 5])
22.py中可变类型与不可变类型
- python不可变数据类型:int 、flotat 、str、tuple
python可变数据类型:list、dict、set
不可变数据类型:相当于单例,之创建一个对象,之后所有引用指向这个对象,内存中有引用计数来记录都少个变量指向这个对象。不允许改变值,如果改变值,相当于创建一个新的对象
可变数据类型:允许值发生变化,值变化也不会生成一个新对象,并且对象的地址也不会发生改变,而相同值创建多个对象,每个对象有自己的地址。
23.for循环原理
- 之所以能用for遍历是因为 所遍历的是一个可迭代对象如list touple dict 但可迭代对象不一定是迭代器,有__iter__方法的都是迭代器对象。
- for循环的原理,调用for后面的__iter__方法,使之变成迭代器对象.然后不断调用__next__遍历,然后捕捉StopIteration 异常,结束迭代。
- 需要用iter将可迭代对象形成一个迭代器对象。而这个对象通常只保存对象本身内存,并不会保存整个数据表里的数据。所以会很节省内存。
- 我们知道的迭代器有两种:一种是调用方法直接返回的,一种是可迭代对象通过执行iter方法得到的,迭代器有的好处是可以节省内存。
24.列表生成式与生成器
列表生成式 a = [i for i in range(1,18)]
for只确定循环次数,而列表里放什么值, 由i决定
列表生成式嵌套 a = [(i,j),for i in range(3) for j in range(2)] 相当于for i in range(3): for j in range(2): print((i,j))
列表生成式:将a = [i for i in range(1,18)]中括号改成()就变成一个生成器
25.range有什么风险
- python2有风险,range返回一个列表。(会占很大内存 )python3没有
26.py生成器与迭代器的区别,生成器的优势
- 生成器自动创建了_iter_()和_next_()内置方法仅仅保存了一套生成数值的算法,调用时,才去计算然后返回一个值。
- 生成器一定是迭代器,而迭代器不一定是生成器,一边循环一边计算的机制称为生成器,含有yield语句的函数,可以减少内存空间。
- 如果在某些情况下,我们也需要节省内存,就只能自己写。我们自己写的这个能实现迭代器功能的东西就叫生成器。
- 凡是可作用于for循环的对象都是Iterable类型;
- 凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
以上是关于Python基础篇的主要内容,如果未能解决你的问题,请参考以下文章