大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
Key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value
dict是用空间来换取时间的一种方法,用在需要高速查找的地方。
dict的key必须是不可变对象
通过key计算位置的算法称为哈希算法,要保证hash的正确性,作为key的对象就不能变的
对象a的内容是’abc’,是指,a本身是一个变量,它指向的对象的内容才是abc’
对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回
函数体内部可以用return随时返回函数结果
函数可以同时返回多个值,但其实就是一个tuple
函数参数必须必选参数在前,默认参数在后
默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误
Python内置的enumerate函数可以把一个list变成索引-元素对
在Python中,这种一边循环一边计算的机制,成为生成器:generator
如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
函数是顺序执行,遇到return语句或者最后一行函数语句就返回
而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
filter()的作用是从第一个序列中晒出符合条件的元素。由于filter()使用了惰性计算,所以只有在取filter()结果的时候,才会真正筛选并每次返回下一个晒出的元素
返回闭包时牢记的一点就是:返回函数不要饮用任何循环变量,或者后续会发生变化的变量
一个函数可以返回一个计算结果,也可以返回一个函数
返回一个函数时,牢记该函数并未执行,返回函数不要引用任何可能会变化的变量
在代码运行期间动态增加功能的方式,称之为装饰器(Decorator)
本质上,decorator就是一个返回函数的高阶函数
面向对象的设计思想是抽象出Class,根据Class创建Instance
类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”
init方法的第一个参数永远是self,表示创建的实例本身
各个实例拥有的数据都互相独立,互不影响
方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据
通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节
Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同
在Python中,实例的变量名如果以__开头,就变成了一个私有变量,只有内部可以访问,外部不能访问
为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的slots变量没来限制该class实例能添加的属性
先定义metaclass,就可以创建类,最后创建实例
如果没有错误发生,可以在except语句块后面加一个else,当没有错误发生时,会自动执行else语句
磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象,然后通过操作系统提供的接口从这个文件对象中读取数据,或者把数据写入这个文件对象
在Python中,文件读写是通过open()函数打开的文件对象完成的。使用with语句操作文件IO是个好习惯
把变量从内存中变成可存储或传输的过程称之为序列号,序列化之后,可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上
线程是最小的执行单元,而进程由至少一个线程组成
在多线程环境下,每个线程都有自己的数据。一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁
itertools模块提供的全部是处理迭代功能的函数,它们的返回值不是list,而是Iterator,只有用for循环迭代的时候才真正计算
IP协议负责把数据从一台计算机通过网络发送到另一台计算机。数据被分割成一小块一小块,然后通过IP包发送出去
IP包的特点是按块发送,途径多个路由,但不保证能到达,也不保证顺序到达
TCP协议是建立在IP协议之上的。TCP协议负责在两台计算机之间建立可靠连接,保证数据包按顺序到达。
TCP协议会通过握手建立连接,然后,对每个IP包编号,确保对方按顺序收到,如果包丢掉了,就自动重发
一个IP包除了包含要传输的数据外,还包含源IP地址和目标IP地址,源端口和目标端口
对于客户端,要主动连接服务器的IP和指定端口,对于服务器,要首先监听指定端口,然后,对每一个新的连接,创建一个线程或进程来处理。通常,服务器程序会无限运行下去
同一个端口,被一个Socket绑定了后,就不能被别的Socket绑定了
使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了
异步IO,当代码需要执行一个耗时的IO操作时,它只发出IO指令,并不等待IO结果,然后就去执行其他代码了。一段时间后,当IO返回结果时,再通知CPU进行处理
异步IO模型需要一个消息循环,在消息循环中,主线程不断地重复“读取消息-处理消息”这一过程
asyncio的编程模型就是一个消息循环。我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO
@asynicio.coroutine把一个generator标记为corountue类型,然后,我们就把这个coroutine扔到EventLoop中执行
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219221.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...