有哪些网站可以做家教,最近一周新闻热点大事件,口碑好的网站建设价格,微信公众号微商城平台文章目录 #x1f680;一.运算符#x1f308;1. 算术运算符#x1f308;2. 身份运算符#x1f308;3. 成员运算符⭐4. 增量运算符⭐5. 比较运算符⭐6. 逻辑运算符 #x1f680;二.可变与不可变#x1f680;三.字符串转义#x1f680;四.编码与解码#x1f4a5;1. 基础使… 文章目录 一.运算符1. 算术运算符2. 身份运算符3. 成员运算符⭐4. 增量运算符⭐5. 比较运算符⭐6. 逻辑运算符 二.可变与不可变三.字符串转义四.编码与解码1. 基础使用 五.进制转化1.python进制转化 六.深浅拷贝复制❤️1. 浅拷贝❤️2. 深拷贝 七.运算升级八.常用方法九.操作扩展 一.运算符
1. 算术运算符
下面以a10 ,b20为例进行计算
运算符描述实例加两个对象相加 a b 输出结果 30-减得到负数或是一个数减去另一个数 a - b 输出结果 -10*乘两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200/除x除以y b / a 输出结果 2//向下取整返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0%取模(余)返回除法的余数 b % a 输出结果 0**幂返回x的y次幂 a**b 为10的20次方 输出结果 100000000000000000000
2. 身份运算符
身份运算符
运算符描述详解is同一性运算符变量ID是否相同ID即变量的唯一标识变量值可能相同但ID不一定相同is not非同一性判断两个变量的引用是否来之不同对象 使用is注意python对于小整数使用对象池存贮问题(交互式模式或者说命令行模式) 1.举个例子在python命令行模式下为什么同样值a,b与c,d的结果却不一样呢a 1000b 1000a is b
Falsec 10d 10c is d
True# 注意因为python对小整数在内存中直接创建了一份不会回收所有创建的小整数变量直接从对象池中引用即可。
# 但是注意Python仅仅对比较小的整数对象进行缓存范围为范围[-5, 256]缓存起来而并非是所有整数对象。
# 也就说只有在这个[-5,256]范围内创建的变量值使用is比较时候才会成立。 而保存为文件执行结果是不一样的这是因为解释器做了一部分优化。即使整数超过256使用is也是成立的。 使用is注意python关于字符串的intern机制存储
# 注意: python中创建两个内容一样的变量时变量名不一样
# 一般都会在内存中分配两个内存地址(id地址)分别给这两个变量。
# 即两个变量的内容虽然一样但是变量的引用地址不一样。
# 所以两个变量使用比较成立但是使用 is比较不成立。# 但是在python中有两个意外情况
# 1.使用python命令行时对于小整数[-5,256]区间内的整数,python会创建小整数对象池这些对象一旦创建
# 就不会回收所有新创建的在这个范围的整数都是直接引用他即可。
# 所以造成在[-5,256]区间内的整数不同变量只要值相同引用地址也相同。
# 此范围外的整数同样遵循新建一个变量赋予一个地址。# 2.python中虽然字符串对象也是不可变对象,但python有个intern机制
# 简单说就是维护一个字典这个字典维护已经创建字符串(key)和它的字符串对象的地址(value),
# 每次创建字符串对象都会和这个字典比较,没有就创建重复了就用指针进行引用就可以了。
# 相当于python对于字符串也是采用了对象池原理。
# (但是注意如果字符串含有空格不可修改没开启intern机制不共用对象。
# 比如a b和a b,这种情况使用is不成立的形式 只有在命令行中可以。
# 使用pycharm同样是True因为做了优化)# 交互式模式命令行模式a abc #没有空格内容一样的两个变量在命令行模式下is 结果Trueb abca b
Truea is b
Truec a b #有空格内容一样的两个变量在命令行模式下is 结果falsed a b c d
Truec is d
False# pycharm自己实践3. 成员运算符
运算符描述in如果在指定序列中找到值就返回True否则返回Falsenot in如果在指定序列中没有找到值就返回True否则返回False
str1 [1, 2, 3, 哈哈哈]print(1 in str1) # True
print(1 not in str1) # False⭐4. 增量运算符
运算符实例c a 等效于 c c a-c - a 等效于 c c - a*c * a 等效于 c c * a/c / a 等效于 c c / a%c % a 等效于 c c % a**c ** a 等效于 c c ** a//c // a 等效于 c c // a
a 1a 1 # 展开形式a a 1print(a) # 2⭐5. 比较运算符
运算符描述比较两个对象的值是否相同这里要与is区别出来,是不识别ID的!比较两个对象值是否不相同大于小于大于等于小于等于
print(2 1) # True# 比较结果为布尔值True False⭐6. 逻辑运算符
运算符逻辑表达式描述andx and y同时满足x和y两个条件返回True否则返回Falseorx or y只需要满足x或y中的任意一个条件就返回True两个都不满足时返回Falsenotnot x满足条件x时返回False,不满足条件x时返回True 优先级 not and or
a 1
b 1
c 2# and 两边为真则为真其余情况为假
print(a 0 and a c) # True
print(a 1 and a c) # False# or 两边为假则为假 其余情况为真
print(a 0 and a b) # False
print(a 1 and a c) # True# not: 取反
print(not c a) # True# 优先级 not and or
a 1
b 1
c 2print(a 1 and c 3 or not a 1) # False二.可变与不可变
不可变(immutable)数值类型int, bool, float,complex, 字符串str元组tuple可变(mutable)列表(list), 集合set字 典dict
三.字符串转义
# 字符前存在\在特定情况下字符就不再表示本身的意思常见
符号解释案例\n换行符print(‘s\nd’)\t水平制表符print(ss\t’dd)\b退格删除一格print(‘帅 \b 不帅’)\r当前位置移到本行开头print(‘d\rhahahs’)\\反斜杠print(‘\\’)\‘’一个双引号\0一个空格符\a系统提示音(交互界面)
字符串前面加上r就可以防止转义
# --- 交互界面 ---print(a\000c)
a cprint(a\0c)
a c四.编码与解码
1. 基础使用
统一码Unicode也叫万国码、单一码由统一码联盟开发是计算机科学领域里的一项业界标准包括字符集、编码方案等。
统一码是为了解决传统的字符编码方案的局限而产生的它为每种语言中的每个字符设定了统一并且唯一的二进制编码以满足跨语言、跨平台进行文本转换、处理的要求。encode() 和 decode() 是常用的字符串编码和解码方法用于将 Unicode 字符串按照指定的编码格式转换为二进制数据并将二进制数据按照指定的编码格式解析为 Unicode 字符串。
下面是两个方法的详细说明 encode([encodingutf-8, errorsstrict]) 该方法用于将 Unicode 字符串进行编码生成一个包含了字符编码后的字节串对象。其中可选参数 encoding 表示指定的字符集如果不指定则默认采用 utf-8 编码errors 参数用于设置错误处理方式取值范围为 strict、ignore 和 replace。 示例代码如下
s Hello, 你好
b s.encode(encodingutf-8, errorsstrict)
print(b) # 输出 bHello, \xe4\xbd\xa0\xe5\xa5\xbddecode([encodingutf-8, errorsstrict]) 该方法用于将已经编码的二进制数据解码为 Unicode 字符串。其中可选参数 encoding 表示待解码的字符编码如果不指定则默认采用 utf-8 解码errors 参数用于设置错误处理方式取值范围为 strict、ignore 和 replace。 示例代码如下
b bHello, \xe4\xbd\xa0\xe5\xa5\xbd
s b.decode(encodingutf-8, errorsstrict)
print(s) # 输出Hello, 你好需要注意的是字符串编码和解码涉及到多种字符编码方式和错误处理方式如果不正确地进行设置和使用可能会导致字符集转换错误、乱码等问题。因此在实际开发中应该根据具体情况选择合适的编码和解码方式并对数据的合法性进行严格的校验和处理。
五.进制转化
1.python进制转化
在 Python 中可以使用内置的 bin()、oct()、hex() 函数将十进制数转化为二进制、八进制和十六进制字符串。
示例代码如下
dec 255# 十进制转二进制
bin_str bin(dec)
print(bin_str) # 输出 0b11111111# 十进制转八进制
oct_str oct(dec)
print(oct_str) # 输出 0o377# 十进制转十六进制
hex_str hex(dec)
print(hex_str) # 输出 0xff需要注意的是这些函数返回的结果都是字符串类型并且带有对应进制的前缀即 0b 表示二进制0o 表示八进制0x 表示十六进制。如果需要去除前缀并获取整数值可以使用 int() 函数。
以下是一个示例代码
# 字符串转整数删除前缀 -- 通过切片处理
int_val int(bin_str[2:], 2)
print(int_val) # 输出 255int_val int(oct_str[2:], 8)
print(int_val) # 输出 255int_val int(hex_str[2:], 16)
print(int_val) # 输出 255如上所示使用 int() 函数时可以指定第二个参数 base 来指定进制例如 base2 表示二进制base8 表示八进制base16 表示十六进制。在实际应用中可以根据需要选择合适的函数和参数来进行进制转换。
# ord() 是 Python 内置函数之一用于将ASCII字符转换为对应的 Unicode 码点。具体而言ord() 接受一个字符串参数表示要转换为码点的字符然后返回该字符所对应的 Unicode 码点。
# 将字符转换为 Unicode 编码
print(ord(A)) # 输出 65
print(ord(a)) # 输出 97
print(ord(€)) # 输出 8364# chr() 是 Python 内置函数之一用于将 Unicode 码点转换为对应的ASCII字符。具体而言chr() 接受一个整数参数表示 Unicode 码点介于 0 到 0x10ffff 之间并返回与该码点相对应的字符。
# 将 Unicode 编码转换为字符
print(chr(65)) # 输出 A
print(chr(97)) # 输出 a
print(chr(8364)) # 输出 €六.深浅拷贝复制
❤️1. 浅拷贝
外层不受影响内层会受影响
l1 [1234, 5678, 910]l2 [a, l1]l3 l2.copy()l1.append(帅) id(l1)
1750917116360id(l2)
1750917140744id(l2[1])
1750917116360
# 内层id地址相同print(id(l2)) # 2429073232384
print(id(l2[1])) # 2104199485056
print(id(l3)) # 2429073240128
print(id(l3[1])) # 2104199485056# 浅复制 外层不同内层id相同❤️2. 深拷贝
内外层都不影响
import copy
l1 [1234, 5678, 910]l2 [a, l1]l4 copy.deepcopy(l2)l1.append(帅)print(id(l1)) # 1633334532096
print(id(l2)) # 1633334532352
print(id(l4)) # 1633334448384
print(id(l2[1])) # 1633334532096print(id(l2[0])) # 1633303890928
print(id(l4[0])) # 1633303890928
print(id(l4[1])) # 1633334532672l2[0] 1234
print(id(l4[0])) # 外层地址不同
print(id(l2[0])) # 内外层都不同七.运算升级
运算符Python 表达式结果描述支持的数据类型[1, 2] [3, 4][1, 2, 3, 4]合并字符串、列表、元组*‘Hi!’ * 4[‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’]复制字符串、列表、元组in3 in (1, 2, 3)True元素是否存在字符串、列表、元组、字典not in4 not in (1, 2, 3)True元素是否不存在字符串、列表、元组、字典
注意in在对字典操作时判断的是字典的键而不是值 八.常用方法
函数名描述sum(item)计算容器中元素值的和len(item)计算容器中元素个数max(item)返回容器中元素最大值min(item)返回容器中元素最小值del(item)删除变量
# 当然还有 idtype这些常见方法# isinstance(x, A_tuple) --- 判断 x 是否是 A_tuple类型注意A_tuple也可以是元组包多个案例如下print(isinstance(a, list)) # False# isinstance(x, (A, B, ...)) 相当于isinstance(x, A) or isinstance(x, B) or ...九.操作扩展
链式赋值
a b c [1, 2, 3, 4]# 其id相同引用的同一组数据
# 改变其中一组 另外一组也会改变序列解包
a [1, 2]
b, c a
# a--1 b--2# 注意 常规解包 多少个元素就需要多少变量去解demo [1, 2, 3, 4]
data, *lets demo# data -- 1 lets -- [2, 3, 4]# 注意 这里利用了不定长参数中的 * 不限接收数据多少
交换变量
a 1
b 2b, a a, b
# a -- 2 b -- 1