python-前20天的着重知识点

时间:2021-07-06 10:19:32

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 内置函数