最近看了一下牛客上python题,对遗忘的知识点做下总结!
考察dict的深拷贝与浅拷贝
kvps = { '1' : 1, '2' : 2 }
theCopy = kvps.copy()
kvps['1'] = 5
sum = kvps['1'] + theCopy['1']
print sum
# 结果是6
在复习笔记中漏掉了dict的特殊性,这里可以补上,可以参考深 浅拷贝,这里要主义的是整形变量是不可变的!数值发生改变时,其内部的id也发生改变。这就不由得让我想起了python的高缓存机制(a=1;b=1 a的id与b的id是一样的!)。如果是下面这种代码结果就是10了
kvps = { '1' : [1], '2' : 2 }
theCopy = kvps.copy()
kvps['1'][0] = 5
sum = kvps['1'][0] + theCopy['1'][0]
print sum
# 结果是10
(python2) What gets printed by the code snippet below?()
import math
print math.floor(5.5)
# 向下取整
这道题需要注意的是python2.x与python3.x的版本区别!即:python3 该函数返回的是 int型变量 python2 返回的是float型变量!
字符串错误的是:
字符串以\0标志字符串的结束
C语言中字符串使用'\0'作为结束符以防止越界,但python中字符串其实是一个固定长度的字符数组,并不需要结束符。
代码运行结果
a = 'a'
print a > 'b' or 'c'
# 输出c
# 不会去打印 True or False
协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
线程由操作系统控制,协程由程序自身控制
'''
python中主要存在四种命名方式:
1、object #公用方法
2、_object #半保护
#被看作是“protect”,意思是只有类对象和子类对象自己能访问到这些变量,
在模块或类外不可以使用,不能用’from module import *’导入。
#__object 是为了避免与子类的方法名称冲突, 对于该标识符描述的方法,父
类的方法不能轻易地被子类的方法覆盖,他们的名字实际上是
_classname__methodname。
3、_ _ object #全私有,全保护
#私有成员“private”,意思是只有类对象自己能访问,连子类对象也不能访
问到这个数据,不能用’from module import *’导入。
4、_ _ object_ _ #内建方法,用户不要这样定义
'''
领取专属 10元无门槛券
私享最新 技术干货