Python的各种各样基础
元组用小括号() tuple
列表用中括号[] list
字典用大括号{} dict
集合也用大括号{},set
集合里面可以放元祖,集合里面要放不能变的,不能放可变的,不能放列表和字典。集合支持数学中的集合操作,交集并集差集。集合里面的元素是唯一的,不能向列表那样,里面有重复的元素,集合里面的数据类型不是唯一的,可以有各种各样的数据类型
Python按照缩进表达代码的逻辑关系,其他语言的缩进可能主要是用来看着美观一点的,而python的缩进跟yaml语法有点像,就是用缩进表达语法的层级关系的。
表达式可以直接使用数据对象。数值不为0的数字以及非空的字符串、元祖、列表和字典都为真值;而数值为0的数字以及空字符串、空元祖、空列表和空字典都代表False。空对象None也代表False
input()函数读入的数据都是字符类型的,数字需要使用int()函数进行转换
import random
all_choices = ['石头', '剪刀', '布']
win_list = [['石头', '剪刀'], ['剪刀', '布'], ['布', '石头']]
prompt = """(0) 石头
(1) 剪刀
(2) 布
请选择(0/1/2): """
computer = random.choice(all_choices)
ind = int(input(prompt))
player = all_choices[ind]
print("Your choice: %s, Computer's choice: %s" % (player, computer))
if player == computer:
print('\033[32;1m平局\033[0m')
elif [player, computer] in win_list:
print('\033[31;1mYou WIN!!\033[0m')
else:
print('\033[31;1mYou LOSE!!\033[0m')
print("Your choice: %s, Computer's choice: %s" % (player, computer))
在中间%的前面有一个字符串,字符串中有两个%s进行占位,这两个%s被后面元组中的两个变量替换。
%s表示使用str()函数将相应的数据进行转换
%d表示十进制整数
%f 表示浮点数
%% 输出百分号
三引号能够保存输入时的原始样式,三引号用于包含特殊字符,保存原始格式。
break循环中断和
continue循环中断
break会跳过循环内的break后面的代码,直接结束循环
continue也会跳过循环内continue后面的代码,但是会开始下一次循环
while
else结构
while如果是正常结束的,会执行else语句
while如果是被break结束的,不会执行else语句
一般在循环次数未知的时候用while循环,
在循环次数可以预见时,就用for循环
for循环从迭代对象中取值,这些迭代对象可以报考字符串、列表、元素、字典
range()函数
最多接收3个参数,分别表示起始值、结束值和步长值。如果只给定一个参数,则表示结束值,起始值默认为0,步长值默认为1.
range()函数只是返回了一个range对象,并不直接返回列表
list(range(10))才会返回[0,1,2,3,4,5,6,7,8,9]这个列表
但是当向它取值时,它仍然可以将相应的数值源源不断地提供给我们
列表的长度是列表中元素的数量,而列表的长度是从0开始计数的,所以列表的长度值刚好也对应了元素的下标
文件是Python组织代码的物理方式,模块是Python组织代码的逻辑方式。将Python程序文件全名的.py扩展名移除,剩下的基本名称就是模块名,如果randpass.py的模块名是randpass
关键字参数 位置参数
通过类创建出来的每个实例都有类中的属性和方法
子类可以拥有多个父类,子类对象拥有所有类的方法
数据库的第一范式、第二范式、第三范式
第二范式中,每张表都需要一个主键字段,主键是不能重复的,比如员工表,员工一般都有一个不重复的员工ID,这一项作为主键相对比较合适。
满足第二范式,必须满足第一范式
满足第三范式,必须满足第二范式
专业一点的问题就是,这张表是不是一个第三范式的表。
第三范式要求,任何非主属性不得传递依赖于主属性
PYPI就是Python的软件市场
sql中的外键约束(Foreign Key Constraint)用于在两个表之间建立和强制引用完整性。它确保一个表中的数据和另一个表中的相关数据保持一致,从而维护数据库的完整性和准确性
进程(process),其实翻译成过程,好像容易理解一点
线程(thread),翻译成螺纹,毛线,好像容易理解,比如是印刷线路板上的半导体连线那种感觉。
process像是一个过程的描述,而实际干活的应该是thread。理解可能不准确,但是可能就是这么个意思。
进程是具有一定独立功能的程序,是系统进行资源分配和调度的一个独立单位;线程是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源。
一个线程只能属于一个进程,而一个进程可以有多个线程,进程中至少有一个线程(通常称之为主线程)。资源被分配给进程,同一个进程的所有线程共享该进程的资源。
还有主线程和工作线程这么个概念。
在讨论POST请求提交表单时,表单(Form),是指网页中用于收集用户输入的HTML元素集合。它通常包含各种输入字段(如文本框、密码框、复选框、单选按钮等),以及一个提交按钮。用户可以在这些字段中输入信息,然后通过点击提交按钮将数据发送到服务器。
POST请求提交表单时指客户端(通常是浏览器)通过HTTP POST方法向服务器发送数据,以提交用户在网页表单中输入的信息。这种方式常用于需要发送较大或敏感数据的场景,如登录、注册、提交评论等。
HTTP POST方法是超文本传输协议(HTTP)中的一种请求方法,用于向指定的资源提交数据以进行处理。POST请求通常用于发送表单数据、上传文件或执行其他需要服务器处理的操作。
POST方法的主要特点
1. 数据包含在请求体中
2. 安全性更高
3. 不会被缓存
4. 无长度限制
5. 不是幂等的
常见的POST请求应用场景
1. 用户登录注册
2. 在线表单。如联系表单、反馈表单等,用户填写信息后提交给服务器。
3. 文件上传。上传图片、文档等文件到服务器。
4. API调用。向RESTful API发送数据,如创建新资源、更新现有资源等。
json的作用之一,可以描述为,因为各种数据烈性不能直接写入文件,所以要借用json的dumps和load来传递数据类型
json的主要作用
1. 数据交换:
json是一种与语言无关的数据格式,易于阅读和编写,同时也易于机器解析和生成。因此,它非常适合用于不同系统、应用程序或服务之间的数据交换。
2. 序列化和反序列化,其实python的dump和load就是序列化与反序列化。
序列化,将复杂的数据结构转换为字符串形式,以便存储或传输
反序列化,将JSON字符串解析回原始的数据结构。
3. 跨平台兼容性
JSON支持几乎所有现代编程语言,包括Python、JS、Java、C#等,这使得它成为跨平台数据交换的理想选择。
4. 简化开发:
JSON格式简单且易于理解,减少了开发者在处理数据时的复杂度。例如,API相应通常以JSON格式返回,便于前端和后端进行交互。