1.CPU存在两种工作状态:一种是内核态,操作系统在运行--可以操作硬件;
另一种是用户态,是应用软件在运行--不可以操作硬件。
应用软件要控制硬件,就要从用户态切换成内核态
2.多道技术:(多道指的是多道/个程序)
空间上的复用:内存中进入多个程序
PS:内存必须实现物理级别的隔离
时间上的复用:cpu要切换:
1. 一个程序占用cpu的时间过长
2. 一个程序遇到I/O阻塞
3.定义一个变量,就会有三个特征:
id
type
value:才是我们存储的数字
4.tag=True
while tag:
name=input('please input your name: ')
password=input('please input your password: ')
if name == 'egon' and password == '123':
print('login successfull')
while tag:
cmd=input('>>: ')
# if cmd == 'quit':
# tag=False
# continue
# print('====>',cmd)
if cmd == 'quit':
tag=False
else:
print('====>',cmd)
5.python2 的input 与raw_input
python3只有input
x=raw_input('>>: ') #python2的raw_input与python3的input的一样的
print(x,type(x))
x=input('>>: ') #python2的input,用户输入什么类型,就原封不动的存成什么类型
print(x,type(x))
6.常见报错: ValueError: not enough values to unpack (expected 2, got 1)
一看就想到是字典出错了, 解决: for k,v in dict.items():
7.nonlocal关键字
1.外部必须有这个变量
2.在内部函数声明nonlocal变量之前不能再出现同名变量
3.内部修改这个变量如果想在外部有这个变量的第一层函数中生效
def f1():
a = 1
def f2():
nonlocal a
a = 2
f2()
print('a in f1 : ',a)
f1()
8.函数和方法的区别?
class Foo(object):
def __init__(self):
self.name = 'alex'
def func(self):
print(self.name)
from types import FunctionType,MethodType
obj = Foo()
print(isinstance(obj.func,FunctionType)) # False
print(isinstance(obj.func,MethodType)) # True
print(isinstance(Foo.func,FunctionType)) # True
print(isinstance(Foo.func,MethodType)) # False
"""
注意:
方法,无需传入self参数
函数,必须手动传入self参数
9.装饰器迭代和生成器的区别:
装饰器就是开放封闭原则的一种实现,利用语法糖在被装饰的函数执行前后执行一些操作
可迭代对象是内部实现了__iter__方法
迭代器是具有__iter__方法和__next__ 方法,生成器是具有生成的功能还有__next__方法
生成器本质就是迭代器,用一下动一下
分别用在哪?
可迭代对象在strak组件的组合查找时用到
生成器函数(yield)在后端取出数据需要循环处理传给前端后,在前端还需要循环时,这时候在后端就用 yield 处理,减轻服务器压力
10.http://www.cnblogs.com/liuwei0824/p/7269576.html 内置函数