编译型语言代表有:C语言
通常都会对源代码进行编译,生成可以执行的二进制代码,执行的是编译后的结果
Python是解释型语言
通常不用对源代码进行编译,一般是通过解释器载入脚本后运行。
Java具有编译与解释两种特性
深浅拷贝
深拷贝:增加一个指针并且开辟了一个新的内存
将对象本身赋值给另一个对象,对副本进行更改时不会影响原对象。
a=3
b=copy.deepcopy()
浅拷贝:只是增加一个指针指向一个存在的地址
对副本进行更改时会影响原对象
a=3
b=a. copy()
列表是可变的,元祖是不可变得 、字典可变的
不可变数据类型:数值型 字符串型 元组型
值改变,相当于建立一个对象,而对于相同值得对象,在内存中则只有一个地址
a=3
b=3
id(a)
12345685
id(b)
12345685
可变数据类型:列表 字典
允许变量的值发生改变,及对变量进行append += 操作后,只是改变了变量的值,而地址不会发生改变。
三元表达式
[on true] if [expression] else [on false]
help()和dir()
help() 返回帮助文档和参数说明
dir()返回对象中的所有成员
如何打乱列表中的元素
random包中的shuffle()函数
join() 连接字符串
split() 按指定字符分了字符串
lstrip() 去掉前置空格
lower()和upper() 大小写转换
islower()和isupper() 大小写判断
os
sys
re
math
datetime
一句话解释什么样的语言能够用装饰器?
函数可以作为参数传递的语言,可以使用装饰器
简述面向对象中new和init区别
new():用来控制对象的生成过程,在对象生成之前调用
init():用来对对象进行完善,在对象生成之后调用
如果new()函数不返回对象,就不会调用init()函数
[i for i in res if i>10]
select distinct name from studnet
lambda x,y:x*y
list=a.split(" ")
res=re.findall('\d+|[a-zA-Z]+',a)
1字节=8位
数据存储 字节
数据传输 位(0|1)
PE8规范
递归的最大层数 998
is 内存地址是否相同
== 内容是否相同
filter:做筛选
map:迭代对象中的每一项
迭代类型可以使用循环来进行遍历
类方法 实例方法 静态方法
class Demo(object):
#类方法
@classmethod
def class_method(cls,number):
pass
#静态方法
@staticmethod
def ctstic_method(number):
pass
#实例方法
def object_method(self,number):
pass
列表推导式
my_list=[i for i in range(10)]
my_list=[x for x in range(9) if x%2==0]
def func(num):
return num*num
my_lis=[func(x) for x in range(9) if x %2==0]
生成器表达式
gen=(i for i in range(10))
字典推导式
d={
'tom':18,
'alice':16,
'bob':20
}
dic={key:value for key,value in d.items()}
Python的特点
1.解释性语言,运行前不需要编译。
2.动态型,声明变量时,不需要声明变量的类型。
3.适合面向对象的编程,允许类的定义以及组合和继承
4.运行快
Python3 实现单例模式
1.使用new
class Singleton(object):
__instance =None
def __new__(cls,*args,**kwargs):
if not cls.__instance :
cls.__instance = super().__new__(cls,*args,**kwargs)
return cls.__instance
a=Singleton()
b=Singleton()
print(a==b)
print(id(a)==id(b))
>>>
True
True
一句好解释什么样的语言可以用装饰器
函数可以作为参数传递的语言