1、注释
共有三种:#、''' '''、""" """
2、数据类型
整数、浮点、字符串、布尔、列表、元组、集合、字典
num1 = 666、num2 = 3.14、t1 = True、t2 = False、
列表:list = [1,2,3,4]
元组:tuple = ('11','aaa','ddd',3)
字典:dict = {'li':'弹琴','l2':'打球'}
集合:set = {1,2,3,4,4,5}
3、基本内建函数
print()、type()、input()等
4、标识符
由数字字母下划线组成,不能是数字开头,不能是35个关键字,区分大小写;
标识符包含:变量名、函数名、类名、对象名等
标识符命名建议:见名知意、大驼峰、小驼峰、下划线(user_name)
我们编写代码过程中,可以用到快捷键,格式化代码快捷键:ctrl+alt + L
5、格式化输出方法
方法一:%s占位、%d占位、%f占位
方法二:print(f"我的名字是{name}")
6、输入方法
输入:input() 内置函数
7、数据类型转换
int()、float()、str()、eval()
8、算术运算符
+、 -、 *、 /、 //(取整数)、 %(取余数)、 **(乘方)
9、字符串运算符
字符串的运算符:+拼接、*复制内容
10、字符串str的操作方法
下标取值、切片、find()、index ()找不到则报错、count ()
11、列表list的常用方法
list1 = [1,2,3,2]
○ 新增:append()、insert()、extend()
○ 切片:【起始:结束:步长】
○ 删除:del、pop()不填默认删最后一个元素、remove()、clear()
○ 查找:in、not in、index()不存在则报错、count()没有则返回0
○ 排序:reverse()、sort()、sort(reverse=True)
12、元组tuple的常用方法
tuple1 = (1,2,3,4,5)
○ 有序序列、元组的元素不能被修改
○ 格式是小括号(),小括号可以省略不写,如tuple1 = 1,2,3,4,5
○ 下标提取值、切片、index()、count()
13、字典dict
dict1 = {'name':'老墨','age':16}
○ 常用方法:切片、通过键提取值、索引、len()
○ 取值:dict1['name']、 dict1.get('name')、 dict1.keys()、 dict1.values()、dict1.items()
○ 增加数据:d = dict(a=1,b=2,c=3)、 update()、setdefault():若存在则不变
○ 删除数据:pop()方法、del关键字、clear()
13、集合set
set1 = {5,2,3,3,4,1}
○ 自动去重、无序
○ 集合set、列表list、元组tuple可以相互转化
○ 修改数据:add()、remove()
14、可变数据类型 和 不可变数据类型
不可变:数字类型、字符串类型、元组tuple
可变:列表list、字典dict、集合set;(数据内容改变,地址也不发生改变)
15、推导式
重点列表推导式:list2 = [x for x in range(8)]
# 这个代码写法1
list_num = []
for i in range(8):
num = random.randint(0, 10)
list_num.append(num)
print(list_num)
# 用列表推导式写法2
list3 = [random.randint(0, 10) for x in range(8)]
print(list3)
# in 后面可以放一个可迭代的对象:容器类型的数据(字符串、元组、字典、列表)
list_a = [a for a in 'python']
print(list_a) #['p', 'y', 't', 'h', 'o', 'n']
list_b = [a*2 for a in 'python']
print(list_b) #['pp', 'yy', 'tt', 'hh', 'oo', 'nn']
# 带if条件的列表推导式
list_c = [x for x in range(10) if x%2==0]
print(list_c)#[0, 2, 4, 6, 8]
# 字典推导式
dict_a = {key:value for key in 'python' for value in range(8)}
# 因为一直覆盖,所以取得最后一个值7
print(dict_a)#{'p': 7, 'y': 7, 't': 7, 'h': 7, 'o': 7, 'n': 7}
# 集合推导式
set_a = {i for i in '有人云淡风轻,有人负重前行'}
print(set_a)#{'前', '行', ',', '有', '重', '负', '人', '风', '云', '淡', '轻'}
16、浅拷贝和深拷贝
- 浅拷贝:重新分配内存空间,新元素指向原来的位置===》不可变数据
- 浅拷贝:(针对不可变的数据类型,:数字、字符串、元组tuple)
- from copy import copy
- tuple2 = copy(tuple1)
- 深拷贝:重新分配内存空间,新元素独立和原来的数据没有任何关联===》可变数据
- 深拷贝(针对可变数据类型:列表list、字典dict、集合set等数据类型)
- from copy import deepcopy
- list2 = deepcopy(list1)
17、三大执行体系:顺序、分支、循环
1)分支 - if
# 分支 - if
age = 18
if age>10:
print("可以吃")
elif age>5:
print("可以申请吃")
else:
print("不准吃")
python3.10之后分支语句出现了新的写法match
match = name:
case "理性":
print("111")
case "感性":
print("222")
判断分支条件True和False:
- True:非0的数字、小数、整数、负数、非空字符串、非空容器类型数据(set、list、tuple、dict);
- False:为0的数据、为空的字符串、为空的容器类型数据;
- 比较运算符:>、<、==、>=、<=、!= ====》运算结果都是布尔值
- 逻辑运算符:and、or、not
- 在 python3.10 之后,可以使用match 、case:
- if,实现三目运算符:print(a if a > b else b) # 如果条件成立返回结果a,否则返回b
2)循环 - while、for
i = 0;
while i<100:
i=i+1;
print(f"循环次数{i}")
for i in range(100):
print(f"循环次数{i}") # 从0到99
3)break 和 continue
break:结束终止整个循环体
continue:跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
# while 中使用 break
n = 0
while n < 5:
n += 1
if n == 3:
break
print(n)
print('循环结束!')
# while 中使用 continue
n = 0
while n < 5:
n += 1
if n == 3:
continue
print(n)
print('循环结束!')
18、函数
-
参数:是否指定参数类型、默认参数值、不定长参数*args元组 和 **kwargs字典;
-
返回值:是否有返回值
-
函数调用:定义关键字参数
-
函数嵌套
'''函数add1:不指定参数类型,无返回值'''
def add1(x,y):
#关键字占位
# pass
print(x+y)#3'''函数add2:指定参数类型,有返回值'''
def add2(x:int,y:int) -> str:
z=x+y
print(z)#6
return str(z)
定义关键字参数(调用的时候):add2 ( x=1, y=3 )
默认参数值(函数定义的时候):def add ( a, b, c=4):
不定长参数:让函数接受长度不确定的参数:可以是0个、1个、100个或者N个参数
*args:让函数接受任何的数量的位置参数,存储方式是元组;
**kwargs:让函数接受任何数量的关键字参数,存储方式是字典;
'''函数的默认参数值,函数的指定参数传值'''
def add1(a=1, b=int, c=int) -> list:
sum = a+b+c;
list1 = [a,b,c];
return list1;
print(add1(a=3,b=2,c=3)) #[3, 2, 3]
'''*args :让函数接受任何的数量的位置参数,存储方式是元组'''
def add2(*args):
print(args)
add2(1,2,3,'333','我',(1,2,3),[1,2,3],{1,2,3},{'a':1,'b':6})
'''**kwargs :让函数接受任何数量的关键字参数,存储方式是字典'''
def add3(**kwargs):
print(kwargs)
add3(a='豆豆',b='饼饼')
函数嵌套:
def add(*args, **kwargs):
def count(a, b):
return a + b;
return count
f1 = add()
c = f1(3,9)
print(c) #12
19、全局变量和局部变量、global标识符
局部变量:
是在函数内部声明的变量,其作用域仅限于声明它的函数内部。
在函数被调用时创建,并且在函数执行完毕后销毁。
其他函数无法访问局部变量。
在函数内部声明局部变量时,可以使用var_name = value的形式进行声明和赋值
全局变量:
在函数外部声明的变量,其作用域延伸到整个程序的范围。
可以在任何函数内部访问和修改。
在函数内部声明全局变量时,需要使用global
关键字进行声明。
全局变量的命名最好避免与局部变量重名,以免发生混淆。
# 声明全局变量
a = 20
def my_function():
global global_var
# 访问全局变量
print("全局变量 a 的值为:", a)
# 函数内部修改全局变量
a=9999
my_function() # 调用函数
print("修改后的全部变量为", a)
20、文件操作
文件的打开和关闭 : open 和 close
- file1.read() # 读取文件全部内容
- file1.readline() #读取文件一行内容
- file1.readlines() #读取文件所有行内容,返回一个列表,数据内容是字符串的数据类型
文件的读写模式:r、w、a、wb、rb、ab、r+、w+、a+、rb+、wb+、ab+
文件操作:
import os
os.rename("abc.txt",'111.txt')# 修改文件名字
print(os.getcwd())# 货物当前文件(文件夹)的绝对路径
os.rmdir("123")# 删除空的文件夹
os.mkdir("456")# 创建空的文件夹
print(os.listdir("456"))# 获取文件夹目录
21、时间处理
import time
# 获取当前本地时间
print(time.localtime())
#获取时间戳
print(time.time())
# 结构化时间:时间 -> 时间
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))
print(time.strftime("%Y-%m-%d %H:%M:%S"))
# 字符串 -> 时间
print(time.strptime("2023-03-05 21:59:27","%Y-%m-%d %H:%M:%S"))
# 等待时间3秒
time.sleep(3)