python笔记

本文详细介绍了Python编程的基础知识,包括代码规范、数据类型(如整型、浮点型、字符串、列表、元组、字典、集合和布尔型)、运算符、流程控制(如条件语句和循环语句)以及函数的定义和参数传递。特别强调了Python中列表、字符串的操作,以及关键字参数、默认参数和可迭代对象的使用。此外,还涵盖了lambda表达式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、语法

1、代码规范

1)使用缩进来划分代码块
2)支持数据类型

类型
整形int
浮点型float
字符串
列表list区别数组,数组是一组相同类型的元素,列表可以元素类型不同
元组
字典
集合
布尔型和C一样,非0都为真,0为假,如果是序列(或字符串),长度不为0为真,为0为假
可迭代对象类似列表,但不一样,range()返回的为可迭代对象

对于字符串,“…”或‘…’表示一行,“““…”””或‘‘‘…’’’表示多行

字符串的处理:
@1 字符串可以类似C中的下标(索引)获取一个字符,并且支持负数,表示倒数第几个
@2 使用:来切片,提取子字符串,str[n:m]表示提取str的从n下标开始m长度的字符串,m省略为0,n省略为全部
@3 索引越界会报错,切片越界解释器会自己处理

列表:
@1 支持索引和切片操作,列表切片,操作同字符串,返回的仍为列表(发生copy)
@2 为切片赋值相当于修改元素(不发生copy吗?),如果为空,相当于删除元素
@3 不同于字符串,列表元素可以修改
@4 嵌套列表,相当于实现一个行列式了,索引方位类型二维(多维)数组

3)运算符

符号
+算术运算的加法,字符串连接,列表合并
-
*算术运算的乘法,作用字符表示重复几次,解包时
/除法
**指数运算
=赋值运算
<
<=
>
>=
==
!=

@1 多重赋值
我们一般的赋值操作都是a = 1,多重赋值为这样 a,b = 1, 2 ,相当于a=1,b=2
对于多重赋值,也可以用可迭代对象作为右值,可迭代对象包括,列表,元组,字典,字符串,生成器
@2 压包和解包
解包
结合多重赋值,右值为可迭代对象,这种操作称为解包。
例如:

a = [1, 2, 3, 4]
x,y,z,w = [1, 2, 3, 4]

将一个列表赋值给了变量,叫解包。
或者

x,y,*z = [1, 2, 3, 4]

那么z将输出列表为

z = [3, 4]

如果这样

x,y,*_ = [1, 2, 3, 4]

那么只有xy有值,后面的都忽略

压包(zip)

a = [1, 2, 3]
b = [4, 5, 6]
zip(a, b)

zip返回一个迭代对象,可以用for遍历,遍历结果为

1, 4)
(2, 5)
(3, 6

4)关键字

关键字
as

2、流程控制

1)条件语句

if

# 一个条件
if x<10:
	...

# 多个条件
if x<10:
	...
else if x>100:
	...
# elif是else if的缩写
elif x>20:
	...
else:
	...

match语句类似switch case
第一种方式,status为数值(字面值模式)

match status:
	case 100:
		print(100)
	case 200:
		print(200)
	case 300 | 400:
		print(200, 400)
	case _:
		print("othre")

第二种方式 ,status为一个元组,元组元素可以为变量。

match status:
	case (1, 2):
		print(1)
	case (x, y):
		print(2)
	case _:
		print(3)

第三种方式,status为一个类对象,对象实例化的时候可以默认参数顺序,也可以指定参数赋值。

class Point
	x: int
	y: int
match point:
	case Point(0, 1):
		print(1)
	case Point(x=0, y=1):
		print(2)
	case Point(y=1, x=0)
		print(3)
	case _:
		print(4)

第四种方式,status为列表,比较列表是否相同。

match status:
	case []:
		print(1)
	case [1]:
		print(2)
	case [1, 2]:
		print(3)
	case _:
		print(4)

守护项,在case后面添加if语句。
先执行case,再执行守护项,如果守护项的值为假,那么这个case就跳过了。

match status:
	case (1, 2):
		print(1)
	case (x, y) if x>y:
		print(2)
	case _:
		print(3)

@1 方式类似switch case,分支条件可以用|(或)组合,“_”代表default

如果需要一个值和多个值比较,用match方法

2) 循环语句

while

for
python中的for语句,依赖某个序列,不同于C,类似于shell
在用for遍历集合的时候,注意集合的竞态导致错误的结果

varlist = [1, 2, 3, 4, 5, 6]
for var in varlist:
	print(var)

使用for按索引迭代列表

varlist = [1, 2, 3, 4, 5, 6]
for i in range(len(varlist)):
	print(varlist[i])

enumerate() ???

break
break功能和C类似。
对于for可以有else子句,else子句在这个for执行break后会执行。

continue
同C。

pass
pass是一条空语句,类似C中的 ; 。

3、函数

1) 定义函数
def (var, ...)
	"""文档字符串(单行)"""
	...
	# 如果有返回调用return
	return ret
def (var, ...)
	"""文档字符串(多行)
	
	多行第二行需要换行后写
	"""
	...
2)传参

@1 默认参数,给传参初始化一个值,如果调用时未传参,则使用默认值(类似C++的默认参数)
不同的是,python的默认参数可以是变量,但是参数默认值在定义的时候值就确定了,
更进一步,python的默认参数,只在定义时计算一次
@2 必选参数,没有默认值得为必选参数,调用时必须赋值
!!! 感觉对象作为参数的时候,类似于C++中的引用,代码里面可以修改掉
@3 位置参数和kv(关键字)参数
当函数定义了默认参数后,没有指定默认参数的为必选参数(调用函数时必须赋值),指定了默认值得参数为可选参数

在调用函数时,直接传参的称为位置参数,kv方式传参的称为关键字参数
调用函数必须遵循一下规则:
(1)必选参数必须赋值
(2)可选参数可以赋值也可以不赋值
(3)关键字参数必须在位置参数之后传参
(4)关键字参数必须是定义时声明过得参数
(5)在意义上同一个参数不能赋值2次,
什么是在意义上???
比如传了一个位置参数和关键字参数,而这个关键字参数的关键字刚好是一个必选参数,那么在意义上这个必选参数就相当于传了2次。
比如:

def func(key, var=2)
	...

func(10, key=11)

10首先赋值给key,后面看到有用关键字参数方式给key赋值为11,会报错。
(5)关键字参数可以乱序
@4 * * arg和*arg形参
**arg传参为字典,接受所有剩余的关键字参数
arg形参接受一个元组,接受所有剩余的位置参数
所以
arg必须在前面,如果这2个形参都有的话
@5 函数定义的位置参数传参和关键字传参

def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2)

/ 前面的只能位置传参,* 后面的只能关键字传参,中间的既可以位置传参,又可以关键字传参。

3)lambda表达式

python官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值