官方文档:https://docs.python.org/3/tutorial/index.html
# coding=utf-8
指定 Python 源文件使用的编码格式(解释非 ASCII 字符),一定要写在第一行,Python3 默认 UTF-8
注释
# 单行注释
'''
多行注释
'''
"""
多行注释
"""
# 三引号本质上是用来定义多行字符串,如果未被赋值给变量,Python解释器会将其视为注释
字符串
print("双引号")
print(" ' ")
print('单引号')
print(' " ')
print('转义符\t\n\\\r\'\"')
print("输入了:",input("请输入:"))
# 切片,自定义分隔符
list2 = '1|2|3'
print(list2.split('|'))# ['1', '2', '3']
# 字符串反向切片
print('12345'[::-1])# 54321
# 字符串正向切片
print('12345'[::1])# 12345
# 索引从 0 开始,到 2 结束,不包含 2
print('12345'[:2])# 12
# 索引从 1 开始,到末尾结束
print('12345'[1:])# 2345
# 强转
print(int('1') + 1)# 2
print(','.join('hello world'.split('l')))# he,,o wor,d
print("123".startswith("1"))# True
print("123".endswith("1"))# False
# str.maketrans 创建转换表:a->1,e->2,i->3,o->4,u->5
# translate() 根据转换表进行替换
print("hello world".translate(str.maketrans("aeiou", "12345")))# h2ll4 w4rld
# 替换
print("hello world".replace('l','L').replace('o','O'))# heLLO wOrLd
print('%s'%'字符串')
print('%d'%123)
print('%r'%'原样输出')
# 格式化替换
name = 'zhangsan'
age = 18
print("name:{},age:{}".format(name,age))
print(f"name:{name},age:{age}")
# 去除空格
print(" sdf ".strip())# sdf
print(" sdf ".lstrip())# 去除左边空格
print(" sdf ".rstrip())# 去除右边空格
运算符
# + - * / % // **
print('整除',10//3)# 3
print('幂运算',3**2)# 9
# 赋值运算符
# += -= *= /= %= //= **=
# 比较运算符
# == != > >= < <= is is not
# 逻辑运算符
# and or not(取反)
# 位运算符
# 按位与运算
print(1 & 2)# 0
# 按位或运算
print(1 | 2)# 3
# 按位异或运算
print(1 ^ 2)# 3
# 左移运算,乘法操作
print(1 << 2)# 4
# 右移运算,除法操作
print(4 >> 1)# 2
# 运算符优先级
# 幂运算 > 取反、负号 > 乘除 > 加减 > 左右移位 > 按位与 > 按位异或 > 按位或 > 比较 > 赋值
内置函数
print('',end='结束符默认是\n')
print('重复打印' * 2)# 重复打印重复打印
print('输出到文件',file=f)
input('输入函数')
# id()函数返回对象的内存地址
print(id(1))# 140732192332184
# 类型判断
print(type(''))# <class 'str'>
# eval()函数将字符串去掉左右引号,当作有效的表达式来执行
print(eval('4*5'))
类型转换
# 转整数类型,浮点类型转整数类型小数会直接舍弃
print(int('123'))
print(int(1.5))
# 转浮点类型
print(float(1))# 1.0
# 转字符串类型
print(str(123))
# 转布尔类型,非 0 整数、非空字符串为 True
print(bool(1))# True
# 整数类型转字符类型
print(chr(97))# a
# 字符转整数类型
print(ord('a'))# 97
# 整数转十六进制字符串
print(hex(123))# 0x7b
# 整数转八进制字符串
print(oct(123))# 0o173
# 整数转二进制字符串
print(bin(123))# 0b1110101
保留字
import keyword
print(keyword.kwlist)
# ['False', 'None', 'True', 'and', 'as',
# 'assert', 'async', 'await', 'break', 'class',
# 'continue', 'def', 'del', 'elif', 'else',
# 'except', 'finally', 'for', 'from', 'global',
# 'if', 'import', 'in', 'is', 'lambda',
# 'nonlocal', 'not', 'or', 'pass', 'raise',
# 'return', 'try', 'while', 'with', 'yield']
特性
# 变量可以接受任意类型的值,不需要转换
i = 1
i = 'dsf'
# 多变量赋值
a = b = 0
x,y = 1,2
print(x,y)# 1 2
# 浮点数相加会丢失精度
print(0.1 + 0.2)# 0.30000000000000004
# round()函数保留小数位数
print(round(0.1 + 0.2,1))# 0.3
# 123是复数的实部,456是虚部的值,j是虚数单位。
x = 123 + 456j
# 复数的实部
print(x.real)# 123.0
# 复数的虚部
print(x.imag)# 456.0
print('Hello' in 'Hello World')# True
print('Hello World' in 'Hello')# False
运行python脚本
终端运行
python 文件名 参数1 参数2
列表
list1 = [1,2,3,4,5]
list1.append('6')
print(list1)# [1, 2, 3, 4, 5, '6']
list1.pop()
print(list1)# [1, 2, 3, 4, 5]
list1.remove(2)
print(list1)# [1, 3, 4, 5]
print(list1[1:3])# [3, 4]截取下标包含1不包含3
print(len(list1))# 4
字典
dict = {"name": "张三", "age": 18}
# 增加
dict["gender"] = "男"
# 修改
dict["gender"] = "女"
# dict.update({"gender": "女"})
# 删除
del dict["age"]
# dict.pop("age")
# 查找
print(dict.get("name"))
print(dict["name"])# 张三
print(dict.keys())# dict_keys(['name', 'gender'])
print(dict.values())# dict_values(['张三', '女'])
# 遍历
for key in dict:
print(key, ":", dict[key])
print(dict.items())
# dict_items([('name', '张三'), ('gender', '女')])
# 清空
dict.clear()
# 复制
newDict = dict.copy()
逻辑
i = 0
while 1:
i += 1
# if i % 2 == 0:
# elif i % 3 == 0:
# else:
if i > 10:
print(i)
break
# continue
函数
# a:int 声明类型但不强制
def add(a:int, b:int):
return a + b
print(add(1, 2))# 3
类
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("张三", 18)
包
# 从模块中导入 类、函数、变量等
from 模块 import 类
# 导入整个模块
import 模块
文件操作
- r:只读
- w:不存在就创建,存在就覆盖
- a:不存在就创建,存在就追加
- b 二进制:图片,视频,音频
- + 读写
# 方式一:必须关闭文件
file = open('demo.txt', 'r',encoding='utf-8')
file.close()
# 方式二:自开合
with open('demo.txt', 'r',encoding='utf-8') as file:
file.read()
# 是否可读
print(file.readable())
# 读过的会从 file 对象中删除
print(file.read())# 读取文件所有内容
print(file.readline())# 读取一行
print(file.readlines())# 读取所有行,返回列表
csv文件
读取CSV文件
newline=''是一个重要的参数,用于防止在写入文件时在不同的操作系统上产生不必要的空行。
import csv
# 打开CSV文件并读取
with open('example.csv', mode='r', newline='', encoding='utf-8') as file:
csv_reader = csv.reader(file)
# 遍历CSV文件的每一行
for row in csv_reader:
print(row) # row是一个列表,包含了当前行的所有字段
写入CSV文件
import csv
# 定义要写入的数据
rows = [
["Name", "Age", "City"],
["Alice", 24, "New York"],
["Bob", 19, "Los Angeles"],
["Charlie", 35, "Chicago"]
]
# 打开(或创建)CSV文件并写入
with open('output.csv', mode='w', newline='', encoding='utf-8') as file:
csv_writer = csv.writer(file)
# 写入标题行
csv_writer.writerow(rows[0])
# 遍历剩余行并写入
for row in rows[1:]:
csv_writer.writerow(row)
JSON
import json
python 转 json
# dumps 直接操作文件
obj = {'user':{'name':'zhangsan','age':18}}
print(json.dumps(obj))# {"user": {"name": "zhangsan", "age": 18}}
# 排序
json.dumps(obj,sort_keys=True)# {"user": {"age": 18, "name": "zhangsan"}}
# 缩进
json.dumps(obj,indent=4)
'''
{
"user": {
"name": "zhangsan",
"age": 18
}
}
'''
json 转 python
# loads 直接操作文件
obj = json.loads('{"name": "zhangsan", "age": 18}')
print(obj['name'])# zhangsan
StringIO 是操作内存的
from io import StringIO
io = StringIO()
将 python 对象编码成 json 格式,并写入到文件对象中
# dump 操作文件句柄
json.dump({"name": "zhangsan", "age": 18}, io)
print(io.getvalue())# {"name": "zhangsan", "age": 18}
将 json 转化为 python 对象,存放在内存中
# load 操作文件句柄
io = StringIO('{"a": 1}')
print(json.load(io))# {'a': 1}