1.编译型语言和解释性语言的区别?
编译型:编译后再执行...代表语言有:C,Java,C#
解释性语言:边解释变执行...代表语言有:python,PHP
2.运算符总结:
①:顺序:括号>not>and>or
②:规则:and前后都为真才为真,or前后有一个为真就为真
③:取值:and前后都不为0的情况,取后面的值,and前面为0时取0位最终值.
or前后不为0的情况下,取后面的值,or前面为0时 取后面的值为最终值
④:括号与布尔结合: c=1 < (2==2) #False d=1 < 2 == 2 #True
3.数据类型:以及每个的5个方法:
①:str(字符串) :split(分割)-->strip(去掉两边的空格)-->upper(大写)-->startwith(以什么开头)-->endwith(以什么结尾)-->lower(小写)
②list(列表): append(追加)-->insert(插入)-->index(索引)-->server(排序)-->pop(删除,加索引删除指定索引,不加默认删除最后一个)
③dict(字典):get(根据key获取value的值)-->items(用于循环,取出所有key和value)-->keys(去除key的所有值)-->values(去除value所有的值)-->pop(删除)
④tuple(元组):Count:查看某个元素出现的次数-->Index:索引
4;参数陷阱:
def func(a,b=[]) 这种写法的陷阱:
列表是可变数据类型,可能会在过程中修改里面的值
5;装饰器 & 带参数的装饰器(带参数的装饰器可以使函数执行任意次)
"""
def counter(num):
def outer(f):
def inner(*args,**kwargs):
rets = []
for i in range(num):
ret = f(*args,**kwargs)
rets.append(ret)
return rets
return inner
return outer
@counter(3)
def func():
print('1111')
rets = func()
print(rets)
"""
6:yield &yield from (节省内存空间)
yield使用
1)函数中使用yield,可以使函数变成生成器。一个函数如果是生成一个数组,就必须把数据存储在内存中,如果使用生成器,则在调用的时候才生成数据,可以节省内存。
2)生成器方法调用时,不会立即执行。需要调用next()或者使用for循环来执行。
yield from的使用:
1)为了让生成器(带yield函数),能简易的在其他函数中直接调用,就产生了yield from。
"""
def foo():
yield 55
yield 66
def func():
yield 1
yield from foo()
yield 2
yield 3
r1 = func()
for i in r1:
print(i)
"""
7;列表生成式
# v1 = [ i for i in range(10)]
# v2 = [ lambda :i for i in range(10)] 匿名函数
# def func():
# return i
# func_list = []
# for i in range(10):
# func_list.append(func)
# x = func_list[5]()
# print(x)
8;py2和py3的区别:
①:默认解释器编码:py2-> ascii ; py3->utf-8
②:字符串和字节 py2:unicode str=bytes
py3:str字符串 bytes:字节
③经典类和新式类:py2:经典类和新式类(直接或间接继承object)
py3:新式类
9;你用过的内置模块有哪些:
os(使用操作系统函数)--re(正则)--time&datetime(时间模块)--random(随机数模块)--json(序列化)--hashlib(加密模块)
--logging(日志模块)--pickle(序列化)
10第三方模块;
requests,bs4,pymysql,pymongo,gevent(gevent是可以很轻松地将它的网络模型分布到多个进程并行处理的。)
安装:pip install 软件名
11常见的双下划线方法:
__call__
__new__
__dict__
__setattr__
__getattr__
__delattr__
__getitem__
__setitem__
__delitem__
__iter__
__enter__
__exit__
__init__
__str__
__repr__
__del__
12:单例模式:
①什么是单例模式;单例模式是一种设计模式,是指一个类仅仅能有一个实例。
②哪里使用单例模式?:django admin 数据库连接池
单例模式的书写:
推荐:
import threading
import time
class Foo(object):
_instance = None
_lock = threading.RLock()
def __new__(cls, *args, **kwargs):
if cls._instance:
return cls._instance
with cls._lock:
if not cls._instance:
cls._instance = object.__new__(cls)
return cls._instance
def task():
obj = Foo()
print(obj)
for i in range(10):
t = threading.Thread(target=task)
t.start()
time.sleep(100)
obj = Foo()