python就业学习笔记(教程:b站快乐学习的代码狗----python就业班)
python语法基础
- Linux上的Shebang符号(#!)
#Shebang通常在Unix系统脚本的第一行开头使用
$which python3 #使用which查询python3解释器的路径
#! /usr/bin/python3 #修改要运行的python主文件,在第一行添加
$ chomd +x y_main.py #修改文件权限,即可使用.y_main.py直接运行
- TODO注释
# TODO(作者/其他) 内容(用于标记需要去做的事情)
- dir内置函数
$dir(对象名) #查看对象的所有属性和方法
- 对象的生命周期
__init__ #生命周期的开始
__del__ #生命周期的结束
- 身份运算符is(比较对象内存地址,判断是否对同一对象的引用)
#python针对None比较时建议使用is
is #判断两个变量引用对象是否为同一个
== #判断引用变量的值是否相等
- 伪私有属性和私有方法
#python中没有真正意义的私有,私有是在给属性和方法命名的时候做特殊的处理,使外界无法访问
#处理方法:在名称前面加上_类名
name._class__Name
- MRO python多继承中判断方法属性的调用路径
name.__mro__ #查看方法的搜索顺序:左到右,上到下,找到执行没找到报错
- 实例方法、类方法、静态方法
#实例方法内部需要访问实例属性,实例方法内部可以使用 类名. 访问类属性
def method0(self, name):
self.name = name
#类方法内部只需要访问类属性
@classmethod
def method1(cls):
pass
#静态方法内部不需要访问实例属性和类属性
@staticmethod
def method2():
pass
- 单例设计模式
让类创建的对象,在系统中只有一个实例
#重写__new__方法,一定要return super().__new__(cls)
#__new__是一个object基类提供的内置静态方法,调用时需主动传递cls参数,作用有:
#在内存为对象分配空间;返回对象的引用,解释器获得对象的引用后,将引用作为第一参数,传递给__init__方法
__new__(cls):
__init__(self):
#单例设计模式:
class demo(object):
#定义类属性记录单例对象的引用
instance = none
def __new__(cls, *args, **kwargs):
if cls.instance is none:
cls.instance = super().__new__()
return cls.instance
#初始化动作只执行一次
- 异常捕获
try:
pass
except 错误类型:
pass
except (错误类型1, 错误类型2):
pass
except Exception as result:
pass
else:
没有异常
finally:
都会执行
- name
测试模块代码只在测试情况下运行,被导入时是模块名,当前程序是__main__
if __name__ == "__main__":
pass
- python2.X 中使用中文
python 2.x默认使用ASCII编码格式
python 3.X默认使用UTF-8编码格式
#在python 2.x文件第一行添加如下代码。解释器会以utf-8编码处理文件
# *-* coding:utf8 *-*
#也可使用
# coding=utf8
#引号前加u告诉解释器这是utf8编码格式的字符
str = u"hello"
- eval
eval会直接转换input的结果
print(eval(input("输入:")))
#输入的字符串会直接运行
- DEMO1_AirBattle
#安装和确认库
sudo pip3 install pygame
python3 -m pygame.examples.aliens
程序结构:

- socket
import socket
socket.socket(AddressFamily, Type)
#AF_INET用于Internet进程通信,AF_UNIX用于一台机器进程间通信
#SOCK_STREAM流式套接字,用于TCP;SOCK_DGRAM数据报套接字,用于UDP
#可同时收发,全收发
# tcp
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# udp
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#关闭
s.close()
- UDP工作流程

- TCP工作流程

- TCP注意点:
1.tcp服务器一般需要绑定,否则客户端找不到这个服务器
2.tcp客户端一般不绑定,因为主动链接服务器
3.TCP服务器通过listen可以将socket创建出来的主动套接字变为被动的,这是tcp服务器必须做的
4.客户端需要链接服务器时,需要用connect进行链接,udp不需要链接直接发送,tcp必须链接,链接成功才能通讯
5.当一个tcp客户连接服务器,服务器会有一个新的套接字,这个套接字用来标记这个客户端,单独为这个客户端服务
6.listen后的套接字是被动套接字,用来接收新的客户端连接请求的,而accept返回的新套接字是标记新套接字的
7.关闭listen后的套接字意味着被动套接字关闭了,会导致新的客户端不能链接服务器,之前链接的客户端正常通讯
8.关闭accept返回的套接字意味着这个客户端已经服务完毕
9.客户端套接字调用close, 客户端会recv解堵塞,并且返回的长度为0,服务器可以通过返回的数据的长度区别客户端是否下线 - 进程、线程、协程
1.进程是资源分配的单位
2.线程是操作系统调度的单位
3.进程切换需要的资源量最大,效率低
4.线程切换需要的资源一般,效率一般(不考虑GIL的情况,GIL全局解释器锁,历史原因在cpython虚拟机难以移除,每个线程在执行过程中都需要先获取GIL,保证同一时刻只有一个线程可以执行代码)
5.协程切换任务资源小,效率高
6.多进程、多线程根据CPU核数不一样可能并行,但协程是在一个线程中是并发的

浙公网安备 33010602011771号