自学内容网 自学内容网

【学习笔记】python

1、 基础

      1.1、基本数据类型

类型 描述
Number 整形、浮点数、复数、布尔值
String 字符串
List 有序的可变列表
Tuple 有序的不可变列表
Set 无序的不重复集合
Dictionary 无序的键值对

TIP
1、查看变量 a 的类型:type(a) —— type不会认为子类是一种父类类型
2、判断变量 a 的类型:isinstance(a,类型) —— isinstance会认为子类是一种父类类型
3、判断 a 是否是 b 的类型:issubclass(a,b)
4、在内存中清除变量所占控件:del 变量1,变量2

类型转换 描述
int(xxx) 转换为整数
float(xxx) 转换为浮点数
str(xxx) 转换为字符串
frozenset(xxx) 转化为不可变集合
chr(xxx) 将一个整数转化为一个字符
ord(xxx) 将一个字符转化为一个整数
hex(xxx) 将一个整数转化为一个十六进制,类型是字符串
oct(xxx) 将一个整数转化为一个八进制,类型是字符串

      1.2、运算符

算数运算符 描述
+、-、*、/ 加减乘除
// 取整
% 取余
** 幂运算
赋值运算符 描述
+=、-=、*=、/= 加减乘除赋值运算符
//= 取整赋值运算符
%= 取余赋值运算符
**= 幂运算赋值运算符
:= 海象运算符,在表达式内部进行赋值
# 不使用海象运算符
value = input("请输入一个字符串(输入 'exit' 退出): ")
while value != 'exit':
    print(f"你输入了: {
     value}")
    value = input("请输入一个字符串(输入 'exit' 退出): ")

# 使用海象运算符
while (value := input("请输入一个字符串(输入 'exit' 退出): ")) != 'exit':
    print(f"你输入了: {
     value}")

海象运算符的优点:可以减少代码的重复,提高代码的可读性和简洁性

逻辑运算符 描述
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 逻辑左移
>> 逻辑右移
and 逻辑与
or 逻辑或
not 逻辑非
成员运算符 描述
in 是否在指定的序列中
not in 是否不在指定的序列中
身份运算符 描述
is 是否引用同个对象,类似于 id(xxx) == id(yyy)
is not 是否引用不同的对象,类似于 id(xxx) != id(yyy)
优先级(由上往下) 描述 类型
(expr…)、[expr…]、{expression…} 括号中的表达式 括号
x[index],x[index1:index2]、x.attr 索引、切片、调用、属性引用 自操作
await x await 表达式
** 乘方 运算
+x、-x、~x 正,负,非 自运算
*、@、/、//、% 乘、矩阵乘、除、整除、取余 运算
+、- 加减 运算
<<、>> 移位 比特运算
& 按位与 比特操作
^ 按位异或 比特操作
| 按位或 比特操作
in、not in、is、is not、<、<=、>、>=、!=、== 比较运算 比较运算
not 逻辑运算
and 逻辑运算
or 逻辑运算
lambda lambda表达式
:= 海象运算符

TIP:在交互模式中,最后被输出的表达式结果会被赋值给变量_,例如

>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625

      1.3、数字

常用操作 描述
abs(x) 返回数字的绝对值
fabs(x) 以浮点数的形式返回数字的绝对值
ceil(x) 向上取整
floor(x) 向下取整
cmp(x,y) 如果 x<y 则返回 -1,x==y 则返回 0,x>y 则返回 1
exp(x) 返回 e 的 x 次方,例如 exp(1) 返回 2.71828…
log(x,e) 以 e 为基数求对数
log10(x) 以 10 为基数求对数
max(x1,x2…) 返回最大值
min(x1,x2…) 返回最小值
modf(x) 返回 x 的整数部分和小数部分,整数部分以浮点型进行表示
pow(x,y) 计算 x**y 的值
round(x,[,n]) 返回浮点数 x 四舍五入的值,n表示保留的位数
sqrt(x) 返回数字 x 的平方根
随机数函数 描述
choice(seq) 从序列的元素中随机挑一个元素
randrange([start,] stop [,strp]) 在指定返回内,start 默认是1,按 step 递增的集合中获取一个随机数
random() 随机生成 [ 0,1 ) 范围内的数
shuffle(list) 将序列的所有元素随机进行排序
uniform(x,y) 随机生成下一个实数,它在 [ x,y ] 范围内
三角函数 描述
sin(x)、cos(x)、tan(x) 正弦、余弦、正切
asin(x)、acos(x)、atan(x) 反正弦、反余弦、反正切
degrees(x) 将弧度转换为角度,如 degrees(math.pi/2) 返回 90°
radians(x) 将角度转换为弧度

数字常量:pi:Π、e:自然常数

      1.3、字符串基础

        ① 引号输出

name = 'my name is "niki"'
print(name) # my name is "niki"

name = "my name is 'niki'"
print(name) # my name is 'niki'

name = 'my name is \'niki\''
print(name) # my name is 'niki'

        ② 多行语句

str1 = 'my' + \
  'name is' + \
  'niki' 
print(str1)

        ③ 让 \ 不发生转义

str1 = r'this is a line with \n'
print(str1)

        ④ 运算

str1 = 'a'
str2 = 'b'
print(str1+str2) # 连接
print(str1*3) # 打印三次

其他数据容器也可以进行同样的 +、* 运算

        ⑤ 字符串中的特殊字符

特殊字符 描述
\b 退格
\000
\n 换行
\t 横向制表符
\v 纵向制表符
\r 将 \r 后面的部分逐一替换掉 \r 前的字符,直到 \r 后的内容完全替换完成
\yyy \三位数字,表示八进制
\xyy \x两位数字,表示十六进制

        ⑥ 字符串的常用操作

大小写转换 描述
str.upper() 转大写
str.lower() 转小写
str.capitalize() 将字符串的第一个字符转为大写,其余的转为小写
str.title() 将字符串每个单词的首字母转为大写
str.swapcase() 将字符串中大小写互换
查找与替换 描述
str.find(str) 返回子串的索引,找不到返回 -1
str.rfind(str) 类似于 find,只不过是从右边开始找
str.index(str) 类似于 find ,但是找不到会抛出异常
str.rindex(str) 类似于 index ,只不过是从右边开始找
str.replace(old,new) 将子串进行替换
str.count(sub) 计算子串出现的次数
拆分与拼接 描述
str.split(sep) 将字符串按照 sep 进行分割,返回一个列表
str.splitlines() 按行拆分字符串,返回一个列表
str.join(iterable) 使用字符串作为分隔符,将 iterable 中的元素连接成一个字符串
s = "hello world"
print(s.split(" "))        # ['hello', 'world']
print("-".join(["hello", "world"]))  # "hello-world"
去除空白字符 描述
str.strip() 去除字符串两端的空白字符
str.lstrip() 去除字符串左边的空白字符
str.rstrip() 去除字符串右边的空白字符
判断字符串的内容 描述
str.isalpha() 检查字符串是否只包含字符且非空
str.isdigit() 检查字符串是否只包含数字且非空
str.isalnum() 检查字符串是否只包含字母和数字且非空
str.isspace() 检查字符串是否只包含空白字符
str.isupper() 检查字符串是否只包含大写字符
str.islower() 检查字符串是否只包含小写字符
str.startswith(prefix) 检查字符串是否以指定前缀开头
str.endswith(suffix) 检查字符串是否以指定前缀结尾
其他 描述
str.ljust(width) 左对齐,默认用空格填充
str.center(width) 将字符串居中,默认用空格填充
str.rjust(width) 右对齐,默认用空格填充
str.zfill(width) 前填充0
str.partition(sep) 将字符串按 sep 进行分割,分割为‘前’、‘中’、‘后’,seq 处于‘中’
str.expandtabs(tabsize=8) 将字符串中的 tab 转化为一定数量的空格

      1.4、字符串扩展

        ① 格式化法1

格式符号 描述
%s 字符串占位符
%d 整数占位符
%5d表示整数的宽度是5,不足5位时用空格补
%f 浮点数占位符
%.2f表示精确到小数点后两位
%c ASCII码占位符
%u 无符号数占位符
%o 无符号八进制占位符
%x 或 %X 无符号十六进制占位符
%e 或 %E 浮点数(科学计数法形式)占位符
name = 'niki'
hobby = 'football'
str1 = "my name is %s" % name
print(str1) # my name is niki
str2 = "my name is %s, my hobby is %s" % (name,hobby)
print(str2) # my name is niki, my hobby is football

        ② 格式化法2

name = 'niki'
age = 18
str1 = f"my namae is {
     name}, my age is {
     age}"
print(str1) # my name i s niki, my age is 18

        ③ 格式化法3

# 基本使用
print('{}网址: "{}!"'.format('xxx', 'www.xxx.com')) # xxx网址: "www.xxx.com!"
# 位置型
print('{1} 和 {0}'.format('Google', 'Runoob')) # Runoob 和 Google
# 关键词型
print('{name}网址: {site}'.format(name='xxx', site='www.xxx.com')) # xxx网址: "www.xxx.com!"
# 保留三位小数
print('常量 PI 的值近似为 {0:.3f}。'.format(math.pi)) # 常量 PI 的值近似为 3.142。
# 左填充和右填充
print('{0:10} ==> {1:10d}'.format(Google, 1)) # Google     ==>          1
# 传入一个容器
table = {
   'Google': 1, 'Runoob': 2, 'Taobao': 3}
print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table) # Runoob: 2; Google: 1; Taobao: 3
# **类似于一种解构
table = {
   'Google': 1, 'Runoob': 2, 'Taobao': 3}
print('Runoob: {Runoob:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table)) # Runoob: 2; Google: 1; Taobao: 3

      1.5、函数

        ① 在函数内部声明变量为全局变量:global

num = 100
def test():
global num
num = 200
test()
print(num) # 200

        ② 多返回值

def test():
return 'niki',18,True
name,age,isMale = test()
print(x,y,z) # niki 18 True

        ③ 传入参数时,位置参数需要在关键字参数之前,位置参数有先后顺序,关键字参数没有先后顺序的要求

def test(name,age,gender):
print(f"my name is {
     name}, my age is {
     age}, I'm a {
     gender}")
test('Tom',gender='boy',age=18)

        ④ *args 参数,它会以元组的形式接收参数

def test(*args):
print(args)
test('niki') # ('niki',)
test('niki',20) # ('niki',20,)

        ⑤ **kwargs 参数 ,它会以字典的额方式接收参数

def test(**kwargs):
print(kwargs)
test(name='niki',age=18) # {'name':'niki','age':18}

        ⑥ 函数作为参数

def add(x,y):
return x+y
def compute(add):
result = add(6,3)
print(result)
compute(add)

        ⑦ 函数的参数有可变类型、不可变类型之分

可变类型 不可变类型
列表、字典 数字、字符串、元组
# 不可变类型
def test1(a):
    a=10 # a指向了一个新空间
    print(a) # 10
a=1
print(test1(a)) # 1

# 可变类型
def test2(l):
    l.append([10,20,30]) # l在原来的空间进行更改
    print(l) # [1,2,3,[10,20,30]]
l=[1,2,3]
print(test2(l)) # [1,2,3,[10,20,30]]

        ⑧ 强制位置参数:\之前的参数必须使用位置参数,*之后的参数必须使用关键字参数,中间的参数既可以选择位置参数、也可以选择关键字参数

def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)
f(10, 20, 30, d=40, e=50, f=60)

        ⑨ 匿名函数 lambda:一种小型、匿名的、内联函数,它可以具有任意数量的参数,但只能有一个表达式,基本使用如下

x = lambda a, b, c : a + b + c
print(x(5, 6, 2)) # 13

        lambda 函数通常与 map()、filter() 和 reduce() 等一起使用,以便在集合上执行操作

numbers = [1, 

原文地址:https://blog.csdn.net/Eddie_hyh/article/details/142760024

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!