1.输出函数
print("hello world","hahaha",sep=",",end=".")
sep 间隔符
end 终止符1.1 格式化输出 and 占位符
# 占位符
# %d 证书
print("hello%dworld" % 1)
# %s 字符串
print("hello%sworld %d" % (" hahaha ",1))
# %f 浮点 默认6位小数 四舍五入
print("hello%.2fworld" % 3.14)
# 格式化输出 f"{表达式{变量名}}"
hello = "hello"
print(f"{hello} 世界")
2.输入函数
input("请输入:")3.变量赋值
aaa = 123
# 无需给出变量类型4.数据类型
# 整形
n1 = 1
# 浮点型
n2 = 3.14
# 布尔型
n3 = False
# complex 复数型 固定写法 z = a + bj; a = 实部 b = 虚部 j = 虚数单位
n4 = 3 + 5j4.1 检测变量类型的方法
type(param)5.字符串
5.1 字符串的两种赋值方式
str1 = "zzzzz"
str2 = """
zzzzz
"""5.2 字符串编码

5.3 编码和解码
a = "这是一个字符串"
print(a, type(a))
# 编码
b = a.encode() # a.encode("utf-8")
print("编码后:",b, type(b))
# 解码
c = b.decode() # a.decode("utf-8")
print("解码后:",c, type(c))5.4 字符串运算符

5.5 字符串函数
a = "这是一一个字符串"
print(a.find("这")) # 返回存在的下标 否则返回 -1
print(a.count("一")) # 返回字符出现的次数
b = a.replace("一","二") # 将 字符串中的指定字符 替换成 指定字符
print(b)
print(a.split("一")) # 将字符串以 指定字符分割 成一个数组
print(a.index("字")) # 返回存在的下标 否则报错
c = "abcd"
print(c.startswith("a")) # 是否以 指定字符开头
print(c.endswith("d")) # 是否以 指定字符结尾
# 上面几个函数都可以指定 开始 和 结尾 如:
print(a.find("这",3,4))
print(c.capitalize()) # 第一个字母大写
print(c.lower()) # 大写转小写
print(c.upper()) # 小写转大写
6.运算符
6.1 算术运算符

6.2 比较运算符
大于 >
小于 <
等于 ==
不等于 !=
大于等于 >=
小于等于 <=
6.3 逻辑运算符
and(与)
or(或)
not(非)
6.4 三元运算(三元表达式)
为真结果 if 判断条件 else 为假结果
a = 3
b = 2
print(a) if a > b else print(b)
结果:37.转义字符

8.判断(if-else,if-elif-else)
# if-else
if 00 == 0:
print("相等")
else:
print("不相等")
# if-elif-else
if 1==1 or 1==2:
print(1)
elif 1<=1 and 1!=2:
print(2)
else:
print(3)9.循环
9.1 for 循环
a = ["111","222","333"]
# range : 从0 到 输入的数,不包含结尾 range(1,10) 从1开始 到10结束,不包换10
for i in range (10):
print(i)9.2 while 循环
a = 3
while a < 5:
print(a)
a += 19.3 break continue
break 结束循环
continue 跳出当前循环轮次
10.集合
10.1 列表
# 列表
aa = ["a",1,"c",3.12,"e","f","g","h"]
# 添加
aa.append("h") # 在末尾添加
aa.insert(1,"i") # 指定下标添加
bb = [1,2,3,4]
aa.extend(bb) # 继承
print(aa)
# 获取
print(aa[3])
# 修改
aa[3] = "z" # 修改
print(aa)
print(aa[3:6]) # 切片
# 查找
print("3" in aa) # 存在
print("3" not in aa) # 不存在
print(aa.index("z")) # 返回下标 不存在则报错
print(aa.count("3")) # 返回出现次数
# 删除
aa.remove("h") # 删除第一次出现的指定元素
aa.pop(1) # 删除指定下标
aa.pop() # 不给下标则默认删除列表中最后一个元素
# del aa 删除指定列表 也可以删除制定列表的指定下标
print(aa)
# 排序 如果全是数字则按照大小,字母或文字 按照自然排序,数字混字母 or 文字 则报错
# aa.sort() # 正序
# aa.reverse() # 逆序
print(aa)10.1.1 列表推导式
# 列表
aa = ["a",1,"c",3.12,"e","f","g","h"]
# 列表推导式
[print(i) for i in aa]
bb = []
[bb.append(i) for i in range(1,25) if i % 2 == 0] # 只有能被2整除的才会被放入 列表中
print(bb)10.1.2 列表嵌套
li = [1,2,3,[6,7,8]] # 列表嵌套指 一个列表中的某个元素 是一个列表
print(li[0])
print(li[3][2])
[print(i) for i in li if isinstance(i,list)] # 如果当前的值 为列表,则打印10.2 元组
# 元组 tuple
# 元组一但创建,不支持增删改,只支持查询
tup = (0, 2, 3, 4, [5, 6, 7, 8, 9], (1, 2, 3))
[print(type(i)) for i in tup]
tub = (0,) # 当元组只有一个元素的时候需要加上逗号,否则返回它唯一值的类型
print(type(tub))
# 取值 和正常的list 相同
print(tua[2])
# 一些list 函数也和list 一样 如 count len index [1:](切片)
# 应用场景
# 1.参数和返回值
# 2.格式化输出
tua = ("小明",18)
print("%s 今年 %d 岁了" % tua)
# 3.常量 让数据不可更改10.3 字典
# 字典 类似于map 以键值对的形式出现
dic = {"b": 2, "c": 3, "d": 4, "e": 5}
# 新增 <-> 修改
dic['a'] = 1 # 存在key 则为修改, 不存在则新增
print(dic)
# 查询
print(dic.get("a", "不存在")) # 如果a这个key不存在,则返回默认结果 “不存在” 默认值不填则返回 None
# 删除 指定key
dic.pop("a") # key 不存在则报错
dic.popitem() # 3.7之前 随机删除,之后默认删除最后一个键值对
del dic["b"] # key 不存在则报错
# 删除字典
# del dic
# 清空
# dic.clear()
# 复制
dic1 = {"z": 90}
dic2 = dic1.copy()
# 将 update 中的字典添加到 调用方内,如果有冲突的key 则以update中的字典的值为主
dic1.update(dic)
# 或者是这种用法,有这个key 则修改,没有这个key 则新增
dic.update({1111:333,2222:444})
# 长度
print(len(dic))
# 返回所有的key
print(dic.keys())
# 返回所有的value
print(dic.values())
# 以元组形式返回所有的键值对
print(dic.items())10.4 集合
# 集合 set -> 特点 无序 唯一
# 如果定义的是数字,则使用哈希表去排序使用自然选择排序;
# 如果定义的是其他类型,则每次运行结果都不同
# 声明 只能加入单独的元素
s1 = {1,2,3,''}
# 定义空集合
s2 = set()
s1.add("1")
s1.add("3")
print(s1)
# 查看hash值
print(hash("2"))
# set 样可以 使用 update remove pop discard ; 并且在更新操作时 只能加入单个元素,不能加入list 或是 其他集合类型
s1.update({"4","2"})
s1.discard("0")
print(s1)10.5 交集和并集
# 交集 & 并集 |
# 交集:相交的元素 或者说 两个集合中都有的元素
# 并集:取全部的元素 去重
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print(s1 & s2)
print(s1 | s2)
# 交集和并集 返回的都是集合类型
a = s1 & s2
print(type(a))
a = s1 | s2
print(type(a))11.类型转换、深浅拷贝、可变对象和不可变对象
11.1 类型转换
# 类型转换
print(int('1'),type(int('1')))
# age = input("age:")
# if 18 <= int(age):
# print("yes")
# else:
# print("no")
print(float('1'),type(float('1')))
print(str({1,3,"9"}),type(str({1,3,"9"})))
print(eval('1'))
s1 = [1,2,3,4,5]
s1 = tuple(s1)
print(type(s1))
s1 = list(s1) # 转换列表只能选择可迭代对象 使用字典转换成list时,只会去key值
print(type(s1))
print(chr(1),type(chr(1)))
# eval 用来返回一个表达式执行之后的结果
print(eval('10+10'),type(eval('10+10'))) # 返回20
# eval 可以实现list dict tuple 和 str 之间的转换
st1 = '[1,2,3,[1,2,3]]'
print(eval(st1),type(eval(st1)))11.2 深浅拷贝
# 深浅拷贝
# 直接赋值: 相同对象 完全共享,包括所有层次的子对象
s1 = [1,2,3,4,5,[1,2,3,4]]
s2 = s1
s1.pop(2)
print(s2)
# 浅拷贝: 不同对象 外层独立,但子对象仍然共享
import copy
s2 = copy.copy(s1)
s1[-1].remove(2)
print(s2)
# 深拷贝: 不同对象 完全独立,包括所有子对象
s2 = copy.deepcopy(s1)
s1[-1].remove(4)
print(s2)11.3 可变(不可变)对象
# 可变对象 -> 存储空间保存的数据允许被修改 如 list dict set
# 不可变对象 -> 存储空间保存的数据不允许被修改 如 tuple int bool float complex str
# 对于不可变对象进行重新赋值时, 内存地址会出现修改
# 查看内存地址 : id
li = [1,2,3]
print(id(li))
li.append(4)
print(id(li))12.函数
1.函数的定义
# 定义函数时无需 定义入参类型 以及返回类型
def login(name):
print("Logging in...")
return "登录成功","name",name
int1 = login("2234")
print(type(int1),int1)2.参数的类型
# 必备参数:在创建函数的时候声明了几个就需要传递几个
def test(aa,bb):
return 1
# 默认参数:给某个参数默认值 -> 默认参数必须在非默认参数后面
def test1(aa,bb = 11):
return bb
# 可变参数:将放在实参位置的参数使用元组的类型全部接受
def test2(*args):
return args
# 关键字参数:接受所有的关键字参数使用字典接受
def test3(**kwargs):
return kwargs
# 函数嵌套
def test4():
print("这是第一层")
def test5():
print("这是第二层")
return test5
# 如果想要直接在外部 调用test5 可以将test5 作为返回值,然后直接调用
func = test4()
func()
# 局部变量 and 全局变量
# 如果想要在函数内部修改全局变量的话 可以使用global
a1 = 100
def test1():
global a1
global a2 # 也可以直接在 函数中声明全局变量
a2 = 100
a1 = '120'
test1()
print(a1)
print(a2)
# nonlocal 修改外层的局部变量
def test2():
a3 = 100
def test3():
nonlocal a3
a3 = '120'
test3()
print(a3)
test2()3.匿名函数
# 只适用于简单的表达式 复杂的表达式还是需要使用函数
a1 = lambda x, y: x + y
print(a1(1, 2))
a2 = lambda **kwargs: "a2 不为空" if kwargs is not None else "这是空的"
print(a2(a1=1, a2=2))4.内置函数
# 查看所有的内置函数
import builtins
print(dir(builtins))
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']内置常量
True,False,None- 布尔值和空值Ellipsis/...- 省略号对象NotImplemented- 表示操作未实现
内置异常类
基础异常类:
BaseException- 所有异常的根类Exception- 常规异常的基类Warning- 警告的基类
具体异常类型:
ArithmeticError- 算术错误ZeroDivisionError- 除零错误TypeError- 类型错误ValueError- 值错误IndexError- 索引错误KeyError- 键错误NameError- 名称未定义AttributeError- 属性错误SyntaxError- 语法错误ImportError- 导入错误FileNotFoundError- 文件未找到等等...
常用内置函数
数学运算:
abs(x)- 绝对值pow(x, y)- 幂运算round(x)- 四舍五入divmod(a, b)- 返回商和余数max(),min()- 最大/最小值sum()- 求和
类型转换:
int(),float(),bool()- 数值转换str(),bytes(),bytearray()- 字符串/字节转换list(),tuple(),dict(),set()- 容器类型chr(),ord()- 字符编码转换bin(),oct(),hex()- 进制转换
迭代和序列:
len()- 长度range()- 生成序列enumerate()- 添加索引zip()- 并行迭代reversed()- 反转序列sorted()- 排序all(),any()- 逻辑判断
对象操作:
id()- 对象标识type()- 对象类型isinstance(),issubclass()- 类型检查callable()- 是否可调用hasattr(),getattr(),setattr(),delattr()- 属性操作
输入输出:
print()- 输出input()- 输入open()- 打开文件
代码执行:
eval()- 执行表达式exec()- 执行代码compile()- 编译代码
其他重要函数:
help()- 帮助信息dir()- 查看属性globals(),locals()- 命名空间iter(),next()- 迭代器操作super()- 调用父类property()- 属性装饰器classmethod(),staticmethod()- 方法装饰器
特殊变量
__name__- 模块名称__debug__- 调试模式__doc__- 文档字符串__import__- 导入函数
5.拆包
tua = (1,2,3)
# 要求元组中的元素个数 和 接受的变量个数相同
a,b,c = tua
print(a,b,c)
# 第二中方式,可变参数
a,*b = tua
print(a,b)13.异常
后面的东西没了,数据库被黑了,懒得再写一遍了,就这样吧!