- 博客(13)
- 收藏
- 关注
原创 第九篇:并发编程
1、进程和线程 进程:一个程序在一个数据集上的一次动态执行过程。 进程一般由程序、数据集和进程控制块三部分组成。 数据集:程序在执行过程中所需要的资源。 进程控制块:用来记录进程的外部特征,描述进程的执行变换,系统用来管理和控制进程, 是系统感知进程的唯一标志。 线程 线程的出现是为了降低上下文的消耗,提供系统的并发性,并突破一个进程只能干一样事的缺陷, 使得进程内并发成为可能。 线程:轻量级进程,它是一个基本的cpu执行单元,也是程序执行过程中的最小单元, 由线程ID、程序计数器、寄存集合器和堆栈共同组
2021-07-12 18:15:46
146
原创 第八篇:网络协议
1、Socket套接字(无法实现并发) 客服端和服务端架构:c/s架构 osi七层: 物理层、数据链路层(MAC地址)、网络层(IP)、传输层(TCP/UDP)、会话层、表示层和应用层 Socket套接字是应用层和TCP/UDP协议通信的中间的抽象层,它是一组接口,把复杂的TCP/UDP协议隐藏在 Socket接口后面,让Socket去组织数据,以符合指定协议。 Socket套接字有两种:基于文件型(AF-UNX)和基于网络型(AF-INET,重要) 基于TCP的套接字:TCP是基于链接的,必须先启动服务端
2021-07-11 22:03:32
201
4
原创 第七篇:异常处理
错误与异常 错误分两种:语法错误和逻辑错误 异常:程序运行时发生错误信号 不同的类对象标识不同的异常,一个异常标识一种错误 异常处理:python解释器检测到错误,触发异常,用于特定捕捉异常的代码, 如果错误则成功进入另一个分支,执行其特定逻辑,使程序不崩溃。 基本语法: try: 被检测的代码 except 异常类型: finally: 不管是否异常均执行 try: a = 1 print(a) except Exception as e: print(e) final
2021-07-11 22:00:55
153
原创 第六篇:面向对象高级
1、反射 面向对(OOP)的优点: 面向对象是一种更高级别的结构化编程,有两点好处: 通过封装明确内外;通过继承+多态在语言层面支持了归一化设计。 泛化/特化 泛化:基于继承,表示所有子类与父类有一样的特点 特化:所有子类的自定义 自省/反射 自省也称为反射,这个性质展示了某对象是如何在运行期间获得自身信息的, 主要指程序可以访问、检测、修改它本身状态和行为的一种能力。 四个可以实现自省的函数,只用于类和对象 hasattr(obj,name) 判断obj对象是否能调用到name字符串的方法或属性 g
2021-07-06 15:44:14
125
原创 第五篇:面向对象设计
三大编程范式:面向过程、函数式和面向对象 面向对象的核心在对象,即将一类具体事物的动作和特征结合在一起。 类:把一类事物的特征和动作整合在一起,是一个抽象的概念。 对象:有类实例化而来,类实例的结果称为一个实例或对象 1、类和对象的相关知识 类的属性:数据属性和函数属性 实例的属性:只有数据属性 注意:类和对象都是通过点(.)访问自己的属性 class Chinese(): '我们都是中国人' dang = '民主党派' def __init__(self,name):
2021-07-06 15:42:23
187
原创 工资管理系统
需求: 1、从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件 2、能增查改员工工资 3、增、改员工工资用空格分隔 4、实现退出功能 import os,sys def check(): with open('info.txt','r') as f: ret = [i.strip().split() for i in f] return ret def check1(name): res = check
2021-07-03 22:04:52
209
原创 购物车程序
作业需求: 用户入口: 1.商品信息存在文件里 2.已购商品,余额记录。第一次启动程序时需要记录工资,第二次启动程序时谈出上次余额 3.允许用户根据商品编号购买商品 4.用户选择商品后,检测是否够,够就直接扣款,不够就提醒 5.可随时退出,退出时,打印移购买商品和余额 商家入口: 1.可以添加商品,修改商品价格1. 运行程序输出第一级菜单 用户端 import sys def file1(name): with open(name,'r',encoding='utf8') as f:
2021-07-02 23:55:30
118
原创 第四篇:模块与包
模块 三种:python标准库、第三方模块、应用程序自定义模块 导入模块的方式(分两种,执行文件为bin): 1.bin和web在同一层:from web.web1.web2 import cal cal.add(2,6) 2.bin的上上级目录和web在同一层(需要路径拼接): os.path.dirname(__file__) #文件的上一层目录 os.path.dirname(os.path.dirname(__file__)) #文件的上上层目录 路径拼接 BASE_DIR = os
2021-07-02 15:44:38
98
原创 第三篇:函数
1、函数 定义:函数是逻辑结构化和过程化的一种编程方法。 函数式编程:先定义一个数学函数(数学模型),然后按照这个数学模型用编程语言去实现它。 使用函数的优点:代码重用;保持一致性,易维护;可扩展性。 过程:简单特殊没有返回值的函数。 函数运行过程中碰到return就结束。 函数的参数:位置参数和关键字参数(位置参数必须在关键字参数的左边) 位置参数,必须一一对应,关键字参数不必一一对应,但都是缺一或者多一都不行 参数组:非固定长度的参数,*列表 **字典 def test(x,*args,**kwargs
2021-07-02 15:34:31
113
原创 三级菜单实现
需要: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 解题思路: 1.先实现选择一级菜单的项输出二级菜单,同理输出三级菜单 2.对输入结果判断(匹配进入下一级,不匹配退出) 3.增加用户选择功能,即增加结果判断 4.增加返回上一级菜单功能,利用循环嵌套,重点tag的使用。 写的过程中,注意把功能分解,把框架搭起来,一步一步添加附属功能。 data = { '火影':{
2021-07-01 23:29:09
408
原创 编写登录接口
需求:编写登陆接口 1. 用户输入帐号密码进行登陆 2. 用户信息保存在文件内 3. 用户密码输入错误三次后锁定用户 解题思路 1.输入用户和密码 2.打开锁定用户文件,并将用户名进行比较,判断是否锁定用户 3.打开用户文件 4.将用户名和密码依次与用户文件中的进行对比,判断登录 5.判断登录次数 在该过程中对tag的运用,较为重要。 import sys tag = True n = 0 while tag: user = input('请输入账号:').strip() pas.
2021-07-01 21:55:20
548
原创 第二篇:字符串格式化与文件操作
一.字符串格式化 字符串的格式化有两种方式:百分号方式(较老)、format方式(先进) 1、百分号方式 %s万能的可以接收任意类型 msg = "i am %s, my hobby is %s" %('lif','alex') print(msg) %d只接收int数字类型 msg = "i am %s, age is %d" %('alex',18) msg = "i am %(name)s, age is %(old)d"%({'name':'alex','old':18}) #传字典 print.
2021-06-19 20:54:56
269
原创 第一篇:数据类型
一.运算符 1、算数运算符 + - * / 取余数 % 取商的整数部分 // 幂 ** 2、比较运算符 == 不等于!= <> > < >= <= 3、赋值运算符 = += -= *= /= %= **= //= a=b a+=c a=a+c a-=c a=a-c a*=c a=a*c a/=c a=a/c %= **= ...
2021-06-19 20:43:34
198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅