解释型和编译型、数据类型、深浅copy、可变类型与不可变类型、字符编码、闭包函数、

解释型和编译型

```python
# 开发环境:windows开发(主流),sanic,fastapi框架,windows安装不上(不支持),装了乌班图,在上面开发,配mac本
# 远程连接linux开发,远程连linux内的docker开发


c:c代码写完,编译(不同平台),跨平台运行,linux上源码安装软件,自行编译,运行
java:一处编码,处处运行,java是编译型还是解释型?编译型,编译过程---把java源代码编译成字节码文件 .class
---不能直接运行在操作系统之上----》jvm(java虚拟机),jvm运行至少要300m内存
jdk
jre
jvm
javase javame javaee
go:编译型,跨平台编译(windows平台可以编译出mac平台的可执行文件),所有go代码打成一个可执行文件

python: 强类型动态语言
js:只能在浏览器中运行,nodejs
php:web开发

```

数据类型

一切皆对象

```python
python中一切皆对象

# type和object的关系
1 type 是object的类
2 type继承了object
3 type是type自己的类
4 object也是由type实例化得到


a=int(2)
#int是一个类,具体实现是由c语言实现的,如果写了pass,看不到源码,有一部分可以看到
# print(type(1)) # int :数字1 的类是int
#
# print(type(int))
# print(type(dict))

# int。dict..都是type类的对象
# int。dict继承了object
# type和object是什么关系?

# print(type(object))
# print(type(type))
# object

def a():
pass

print(type(a))


print(type(int)) #type
print(type(object)) #type
print(type(type)) #type

# 所有类,除了object都继承自object,包括type


```

深浅copy

```python
#一切皆对象的好处
不同类型之间的变量直接可以相关赋值
a=100
a='xxx'
其实本质,变量都是指向了一个内存地址
出现了深浅copy问题
# 深浅copy问题

# l=[1,2,3,[4,5,6]]
# l2=l #赋值
#
# print(l2 is l)
# from copy import copy
# from copy import deepcopy
# # l3=copy(l)
# # print(l)
# # print(l3)
# # print(l is l3)
# # l3[3][1]=999
# # print(l)
# # print(l3)
#
# l4=deepcopy(l)
# l4[3][1]=999
# print(l)
# print(l4)

```

可变类型与不可变类型

```python
#字典,列表,集合 可变类型
#数字,字符串,元组 不可变类型
# 字典的key必须用不可变类型,可以hash

# python中的参数传递是值传递还是引用传递?
python中参数传递都是copy一份传递过去,由于一切皆对象,传过去,都是地址,python中区分可变和不可变类型,可变类型在函数中修改会影响原来的,不可变类型,不会影响原来的
```

字符编码

```python
# 计算机的计量单位:
bit比特位:0或者1的一个小格
8个bit位是一个byte,一个字节
1024个字节---》1kb
1024kb---》1mb
1024mb---》1gb

1个字节---》2的8次方中变化,就可以表示出所有的字符(数字,字母,标点符号)

计算机到了中国---》中国汉字--》gbk编码
但是到了不同国家,不同国家有不同国家编码方式,就会出现乱码问题

Unicode编码统一了,字符和数字的对应关系

utf-8:目前主流的编码方式
utf-16

需要说清楚:assic码,gbk,unicode,utf-8
```

闭包函数

```python
1 定义在函数内部
2 对外部作用域有引用

函数是一等公民:函数可以赋值给一个变量
# 装饰器是闭包函数的典型应用
# python中有装饰器语法糖 @

def wrapper(func):
def inner(*args,**kwargs):
# 代码
res=func(*args,**kwargs)
# 代码
return res
return inner

# def a():
# print("xxx")

# 没有语法糖
# a=wrapper(a)
# a()

# 有语法糖
# @wrapper()
def a():
print("xxx")

# 面向切面编程 AOP
# OOP 面向对象编程

```
原文地址:https://www.cnblogs.com/0B0S/p/13449000.html