一、编辑器简介:
1、python:pycharm(收费),vscode(免费)。
2、golang:goland(收费),vscode(免费)。
3、java:idea(收费),eclipse(免费),MyEclipse(免费)。
4、前端:webstorm(收费)。
5、php:phpstorm(收费)。
6、数据库开发:datagrip(收费)。
7、以上可购买jetbrains公司的全家桶,一个注册码,可以都用。
8、android:androidstudio(收费),eclipse+adt。
二、开发环境
1、windows系统为主。
2、有一些框架windows上面装不上,如sanic,fastapi框架,就需要在linux或mac环境上开发。
3、远程连接linux开发,远程连linux内的docker开发。
三、编程语言的分类
1、c:编译型,c代码写完,需要根据根据不同的平台编译,所以c写的程序最好用源代码安装,自行匹配当前环境运行。
2、java:编译型,首先把java源码编译成字节码文件 .class,字节码文件无法直接运行在操作系统上,要通过jvm(java虚拟机,类似于python解释器)执行。
3、go:编译型,跨平台编译成一个可执行文件。
4、python:解释型,强类型动态语言。
5、js:解释型,弱类型。
6、php:web开发。
四、一切皆对象
1、type和object的关系:
①type是所有类的类,包括object,包括type自己。
②object是所有类的基类,包括type,除了object自己。
五、赋值引用与深浅拷贝
1、赋值引用:指向同一个内存地址。
2、浅拷贝:各自指向的内存地址不是同一个,但是两个内存地址指向的值相同。
3、深拷贝:各自指向完全不同的内存地址,内部继续检索,若有可变类型,会同样生成不同内存地址,只复制值,后续向内依然如此。
六、可变类型与不可变类型
1、可变类型,不可哈希:字典,列表,集合。
2、不可变类型,可哈希:字符串,整型,浮点型,元祖。
3、字典的k必须是可哈希的----不可变类型。
4、python中的参数传递:由于一切皆对象,所以传过去的都是地址,所以如果传的是可变类型,若其元素在函数内被修改而其自身的内存地址没有改变,外部的原值也会同步变化,类似于浅拷贝。
5、参考博客:https://www.cnblogs.com/xiaoyuanqujing/articles/12008689.html。
七、字符编码
1、计算机计量单位:
①bit:0或1所占位置的单位。
②bytes:字节,也写作,8bit。
③Kb=1024b。
④Mb=1024Kb。
⑤Gb=1024Mb。
⑥Tb=1024Gb。
⑦Pb=1024Tb。
2、ascii ===> gbk ===> unicode ===> utf-8。
八、闭包函数
1、定义:
①定义在函数内。
②对外部作用域有引用。
2、典型应用:装饰器(面向切面的编程---AOP)。
def passer(func): def wrapper(*args,**kwargs): # 新增代码 res=func(*args,**kwargs) # 新增代码 return res return wrapper # 语法糖 @passer def too(): pass