第二课堂笔记:python入门
数据类型和操作
python的常见数据类型
标准数据类型
不可变数据
- Number(数字)
- String(字符串)
- Tuple(元组)
可变数据
- List(列表)
- Set(集合)
- Dictionary(字典)
其他
- Type(类型)
Number
-
int(整数)
离散的数据类型
-
float(浮点数)
-
浮点数误差:
精确计算浮点数
import decimal a = decimal.Decimal('0.1') b = decimal.Decimal('0.2') print(a + b) # 0.3(字符对象,不能直接与浮点数比较)
-
科学计数法(E记法)
4e-05(4乘10的负五次方)即0.00004
-
-
bool(布尔数)
-
可当作整型对待,True相当于1,False相当于0
-
False:
-
定义为False的对象(None, False)
-
值为0的数字类型:0,0.0,0j,Decimal(0),Fraction(0, 1)(分子0,分母1的有理数)
-
空的序列和集合:'', (), [], {}, set(), range(0)
-
-
-
complex(复数)
x = 1+2j x.real # 获取实部数值(浮点数 x.imag # 获取虚部数值(浮点数
python的运算
运算符
- 算术:+, -, *, @, /, //(地板除,向下取整), **, %, - , +
- 关系:<, <=, >=, >, ==, !=
- 赋值:+=, -=, *=, /=, //=, **=, %=
- 逻辑:and, or, not
其他运算操作
- abs(x) # 绝对值
- complex(re, im) # 返回一个复数
- c.conjugate() # 返回c的共轭复数
- divmod(x, y) # 返回(x // y, x % y)
- pow(x, y) #计算x的y次方,同x ** y
变量和函数
变量(variables)
变量命名规则
-
必须以字母或下划线(
_
)开头 -
命名可由字母、数字和下划线组成
-
大小写敏感
-
尽量避免使用保留字命名
-
查询保留字
import keyword keyList = keyword.kwlist print(keyList) >>> ['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']
-
函数(Functions)
创建和调用
def myfunc(): # 创建
pass # 空语句,常用作占位符
myfunc() # 调用
参数
def myfunc(x): # 创建
print(x)
myfunc(12) # 调用
>>>12
位置参数
def myfunc(x, y, z): # 创建
return "".join(z, y, x)
myfunc(1, 2, 3) # 调用
>>>3, 2, 1
关键字参数
- 调用函数时明确传入变量给到哪个参数
- 位置参数必须在关键字参数之前
def myfunc(x, y, z): # 创建
return "".join(z, y, x)
myfunc(x = 1, y = 2, z = 3) # 调用
>>>3, 2, 1
默认参数
-
定义函数时预设参数的值,如果调用函数时没有给该参数传递值,则该参数默认采用预设的值
-
默认参数必须在最后
def myfunc(x, y, z = 3): # 创建 return "".join(z, y, x) myfunc(x = 1, y = 2) # 调用 >>>3, 2, 1
收集参数
将参数打包为元组
def myfuc(*args):
print(args)
myfunc(1, 2, 3, 4, 5)
>>>(1, 2, 3, 4, 5) # 元组
def myfuc():
return 1, 2, 3
myfunc()
>>>(1, 2, 3) # return多个值时函数自动将它们打包为元组
-
如果在收集参数后面需要其他参数,需要用关键字参数指定其他参数
def myfuc(*args, a, b): print(args, a, b) myfunc(1, 2, 3, a = 4, b = 5) >>>(1, 2, 3, 4, 5)
将参数打包为字典
def myfuc(**kwargs):
print(kwargs)
myfunc(a = 1, b = 2, c = 3)
>>>{'a':1, 'b':2, 'c':3}
此时必须使用关键字参数
解包参数
解包元组
args = (1, 2, 3, 4)
def myfunc(a, b, c, d)
print(a, b, c, d)
myfunc(*args)
>>>1 2 3 4
解包字典
kwargs = {'a':1, 'b':2, 'c':3, 'd':4}
def myfunc(a, b, c, d)
print(a, b, c, d)
myfunc(**args)
>>>1 2 3 4
Tips
-
使用help()查看函数文档时,常在函数原型中看到"/"
abs(x, /) sum(iterable, /, start=0)
"/"左边的参数必须传递位置参数,右侧随意
自定义函数也可以使用这个语法
def abc(a, /, b, c)
-
接上,"*"右边只能是关键字参数
返回值
return 2x
执行完return语句后,函数立即返回,不执行return后面的语句
如果没有return,函数会自行返回None
作用域问题
global:在函数内引用全局变量的值,即不生成同名局部变量
nonlocal:在函数内引用全局变量的值,并有修改该变量的值的权限
global x
nonlocal x
当函数嵌套使用时,内层函数仍无法直接修改外层函数的变量,但可以引用外层变量的值
条件
if
判断条件成立,则运行其包含的语句或代码块
if-else
判断条件成立,则运行其包含的代码块,不成立则执行另外的语句或代码块
if-elif
多个条件,一个不成立就判断另一个
if-elif-else
在上一类的基础上,如果所有条件都不成立,则执行另外的代码
条件表达式
条件成立时执行的语句 if condition else 条件不成立时执行的语句
if-else
a = 3
b = 5
small = a if a < b else b
if-elif-else
score = 66
level = ('D' if 0 < score < 60 else
'C' if score < 70 else
'B' if score < 80 else
'A' if score < 100 else
"请输入0-100之间的数")
while循环
while condition is True:
statement(s)
if condition:
break
else: continue
else:
break 语句
跳出循环体
continue语句
跳出循环体并回到循环体的判断位置
else语句
当循环正常结束时,进行else语句
for循环
for variable in 可迭代对象:
statement(s)
可迭代对象
可依次取出元素的对象
- 序列(字符串,列表,range()
range()
- range(n):从0开始的n个数字
- range(m, n):前闭后开的区间(开始的数字,结束的数字)
- range(m, n, l): l为步长,即每两个数之间相差的数
- 步长可以为负数,如range(10, 5, -2)
字符串
编写方式
-
单引号
-
双引号
如果字符串内需要使用单/双引号,可用另一种引号包裹字符串
也可使用转义字符
-
三引号
原始字符串
在字符串前加"r",使字符串内的转义字符不再有效
跨行字符串
- 在每一行的末尾加上一个"\"
- 用’‘’ ‘’‘或”“” “”“包裹字符串
方法
大小写切换
- (x.)capitalize(): 基于原字符串生成一个新字符串,其首字母为大写,其余为小写
- (x.)casefold(): 全小写(不止英文
- (x.)title(): 将每个单词的首字母变成大写,其余变小写
- (x.)swapcase(): 大小写反转
- (x.)upper(): 全大写
- (x.)lower(): 全小写(仅限英文
左中右对齐
- center(width, fillchar=' '):若宽度不足则以空格(默认,可更改)补充,使字符串居中
- ljust(width, fillchar=' '):若宽度不足则以空格(默认,可更改)补充,使字符串居左
- rjust(width, fillchar=' '):若宽度不足则以空格(默认,可更改)补充,使字符串居右
- zfill(width):以0填充左侧
查找
- count(sub[, start[, end]]): 查找子字符串在字符串内出现的次数,可选参数限制查找范围
- find(sub[, start[, end]]): 定位子字符串在字符串中的下标索引值,从左往右,如果找不到,返回-1
- rfind(sub[, start[, end]]): 定位子字符串在字符串中的下标索引值,从右往左,如果找不到,返回-1
- index:与find相似,但找不到会报错
- rindex:与rfind相似,但找不到会报错
替换
-
expandtabs([tabsize=8]):用空格代替制表符并返回新的字符串,参数指定一个tab等于多少空格
-
replace(old, new, count=-1):old替换为new,count指定次数
-
translate(table):根据转换规则的表格替换字符串内字符,返回新字符串
x = "I love A" x.translante(str.maketrans("ABCDEFG", "1234567", love(指定的忽略内容))) >>>"I 1"
判断
- startswith(prefix[, start[, end]])
- endswith(suffix[, start[, end]])
- isupper()
- islower()
- istitle()
- isalpha()
- isascii()
- isspace()
- isprintable()
- isdecimal()
- isdigit()
- isnumeric()
- isalnum()
- isdentifier()
截取
- strip(chars=None)
- lstrip(chars=None)
- rstrip(chars=None)
- removeprefix(prefix)
- removesuffix(suffix)
索引和切片
与列表相同
格式化字符串
"1 + 2 = {}, 2*2 = {}".format(1+2, 2*2)
>>>'1 + 2 = 3, 2*2 = 4'
"1 + 2 = {1}, 2*2 = {0}".format(2*2, 1+2)
>>>'1 + 2 = 3, 2*2 = 4'
位置参数
"{0}{0}{1}{1}".format("y", "n")
>>>'yynn'
关键字参数
"life is {a}, you need {b}".format.(a = "short", b = "Python")
>>>'life is short, you need Python'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本