聪明办法学Python chap 2 chap 3
Chap 2 数据类型和操作
数据类型
基础类型:
-
整型 (int)
-
浮点数 (float)
-
字符串(str)
-
布尔型 (bool) True / False
-
类型 Type ("类型"也是一种类型)
print(type(2)) print(type(2.2)) print(type(2 < 2.2)) print(type(type(2)))
<class 'int'> <class 'float'> <class 'bool'> <class 'type'>
复杂类型:
• 列表(list):可存储不同类型元素,动态增删。例如[1, "two", True]。
• 元组(tuple):类似列表但不可修改,如(1, 2, 3)。
• 集合(set):存储不重复元素,可进行集合运算,如{1, 2, 3}。
• 字典(dictionary):键值对存储,通过键快速查找值,如{"key": "value"}。
• 复数(complex):表示复数,如3 + 4j。
• 函数(function):可作为数据类型,代表可执行代码块。
• 模块(module):一组相关函数和变量集合。
内置运算符:
算术运算符
+
:加法-
:减法*
:乘法/
:除法//
:整除(结果为整数)%
:取模(余数)**
:幂运算
比较运算符
==
:等于!=
:不等于>
:大于<
:小于>=
:大于等于<=
:小于等于
逻辑运算符
and
:逻辑与or
:逻辑或not
:逻辑非
赋值运算符
=
:赋值+=
:加法赋值(例如:x += 1
等同于x = x + 1
)-=
:减法赋值*=
:乘法赋值/=
:除法赋值//=
:整除赋值%=
:取模赋值**=
:幂运算赋值
位运算符
&
:按位与|
:按位或^
:按位异或~
:按位取反<<
:左移>>
:右移
成员运算符
in
:检查元素是否存在于序列中not in
:检查元素是否不存在于序列中
身份运算符
is
:检查两个引用是否指向同一个对象is not
:检查两个引用是否不指向同一个对象
数据操作
- 整型和浮点数可以直接参与数学运算,只有整型的运算的结果为整型,有浮点数参与的运算结果为浮点数
- 字符串,列表等数据的切片索引从
0
开始到n-1
(n为数据长度)
字符串切片规则:
string[start:stop:step]
start
:切片开始的位置(包含该位置)。如果省略,默认从字符串的开头开始。
stop
:切片结束的位置(不包含该位置)。如果省略,默认到字符串的末尾。
step
:步长,即每次跳过的字符数。如果省略,默认为1。所有拥有索引的数据类型切片规则与字符串类似
注意:
- 索引可以是负数,表示从字符串的末尾开始计数。例如,
s[-1]
表示字符串的最后一个字符。- 如果
start
大于stop
,切片结果为空字符串。- 如果
step
为负数,切片将反向进行。- 切片操作不会改变原始字符串,它返回的是原始字符串的一个新副本。
- 切片的索引超出字符串范围不会导致错误,Python会默默地处理这种情况,返回可用的部分。
- 字典:以键值对的形式储存数据,可以通过
键
作为索引来获取对应的值
Chap 3 变量与函数
变量:
- 变量只是一个名字,指代一段数据
- 通过
=
来给变量赋值 - 每次赋值都会覆盖掉原来的值
- 变量命名规则:
必须以字母或下划线_开头
命名可由字母、数字和下划线组成
大小写敏感
尽量避免使用保留字命名
保留字
False class finally is return None continue for lambda try True def from nonlocal while and del global not with as elif if or yield assert else import pass break except in raise
函数:
def function_name(parameters):
# 函数体
return some_value
- 函数由两个部分组成:header (即上面的function_name)和 body
header
用于定义函数的名称
和参数
- 当函数被调用时,参数将会作为变量被提供给函数的
body
部分 - 可以提供多个参数(用逗号
,
分隔),也可以不提供参数(0 个) header
以冒号(:
)结尾,代表后面会跟着body
部分
body
包含函数执行的语句(statement
)
- 语句需要缩进
- 当语句不再缩进,函数部分结束
- 一般会使用
return
语句,来让函数返回其结果,但不是必须的
函数的目的是将一部分在主程序中反复出现的代码,或者完成某一特定功能的代码(这两者之间明显的划分)抽象出来,构造成一个函数,增加代码的可读性
另外讲到函数的位置参数和关键字参数
def function(a,b,c):
ans = a+b*c
return ans
ans1 = function(1, 2, 3)
ans2 = function(c=3, a=1, b=2)
在这段代码中ans1
和ans2
的结果是一样的,但是采用了不用的提供参数的形式
-
位置参数:
ans1 = function(1, 2, 3)
在这种方式中,实参的顺序必须与形参的顺序相匹配。
函数调用
function(1, 2, 3)
使用了位置参数,其中1
被赋值给a
,2
被赋值给b
,3
被赋值给c
。 -
关键字参数:
ans2 = function(c=3, a=1, b=2)
在这种方式中,实参通过参数名来指定,这允许你以任何顺序提供参数,只要它们与形参匹配。
函数调用
function(a=1, b=2, c=3)
使用了关键字参数,其中a
被明确地赋值为1
,b
被赋值为2
,c
被赋值为3
。
两种调用方式在功能上是等价的,它们都会得到相同的结果。在这个例子中,函数 function
计算的是 a + b * c
。对于两种调用方式:
function(1, 2, 3)
计算的是 1 + 2 * 3
,结果是 1 + 6 = 7
。
function(a=1, b=2, c=3)
同样计算的是 1 + 2 * 3
,结果也是 7
。
关键字参数的一个好处是它们可以提高代码的可读性,特别是当函数有多个参数时。