Python运算符、表达式、数据类型及常用关键字

运算符

算术运算符

运算符功能说明示例
**幂运算符,用于计算左操作数的右操作数次幂2 ** 3 = 8
%模运算符,商数取余5 % 2 = 1
//整除运算符,商数取整5 // 2 = 2
/除法运算5 / 2 = 2.5
*乘法运算5 * 2 = 10
-减法运算5 - 2 = 3
+加法运算5 + 2 = 7

比较运算符

运算符功能说明示例
>大于5 > 2 返回结果为:True
<小于5 < 2 返回结果为:False
>=大于等于5 >= 2 返回结果为:False
<=小于等于5 <= 2 返回结果为:True
==等于5 == 2 返回结果为:False
!=不等于5 != 2 返回结果为:True

赋值运算符

运算符功能说明示例
**=幂=运算符a **= 3 等价于 a = a ** 3
%=模=运算符a %= 3 等价于 a = a % 3
//=整除=运算符a //= 3 等价于 a = a // 3
/=除=运算符a /= 3 等价于 a = a / 3
*=乘=运算符a *= 3 等价于 a = a * 3
-=减=运算符a -= 3 等价于 a = a - 3
+=加=运算 符a += 3 等价于 a = a + 3

成员运算符

运算符功能说明示例
in成员运算符,检查左操作数是否在右操作数中10 in [10,20,30] 返回结果为:True
not in非成员运算符,检查左操作数是否不在右操作数中40 in [10,20,30] 返回结果为:True

布尔运算符

运算符功能说明示例
and逻辑与,所有项为True则为True5 > 2 and 5 > 7 返回结果为:False
or逻辑或,其中一项为True则为TrueTrue or False 返回结果为:True
not只作用于一个布尔值,值为其相反的布尔值not False 返回结果为:True

表达式

表达式是由运算符和操作数组成的。操作数可以是固定值、常量、变量、函数等。运算符可以是加法、减法、乘法、除法、幂等。
常用Python表达式如下:

表达式示例功能说明
算术表达式3 + 4表示3和4相加结果 7
字符串表达式“hello:” + “boy”用于将两个字符串连接起来,结果为 hello:boy
布尔表达式3 == 4判断3和4是否相等,结果为 False
逻辑表达式3 > 2 and 3 > 4将多个布尔表达式组合起来进行逻辑运算,结果为False
身份测试表达式a is b检查引用是否指向同一个对象,示例为比较a和b的引用,若指向同一对象结果为True,否则为False

Python数据类型

数据类型是指一类值,每个值都属于一种数据类型,觉的数据类型有以下几种:
字符

字符型:str

  • 字符串连接用符号 +

>>>'abc' + 'def'
'abcdef'
  • 字符串复制用符号 *
>>>'abc' * 5
'abcabcabcabcabc'
  • 字符串也可以看作是单个文本的列表,对列表的许多操作也可用作字符串,如:下标取值、切片取值、for循环、in和not in等。
  • 字符串与列表不同的是,字符串是不可变数据类型,而列表是可变数据类型。
  • 字符串可用单引号或双引号开始和结束。
  • 字符串转义符:
    \t 制表符
    \n 换行符
    \ 反斜杠
  • 原始字符串:就是声明字符串什么就是什么,如转义符也当成是字符串的字符,在字符串开始的引号之前加上‘r’表示该字符串为原始字符串
>>>print(r'this is color\'s cat.')
this is color\'s cat.
  • 三重引号表示多行字符串,多行字符串的起止是3个单引号或3个双引号,三重引号之间的制表符、换行符、引号等,都被认为是字符串的一部份,Python的缩进规则不适用于多行字符串。
  • 注释:单行注释用‘#’号,多行注释用三重引号,即多行字符串也可用作多行注释。
  • in和not in操作
# 以下表达式检查左边的字符串是否在右边的字符串中(精确匹配,区分大小写)
>>>'' in 'strr'
True
>>>'cat' not in 'aaa,cat'
False

整型:int

Python3中已经不分int和long了,只有int型,用type()函数可以查看变量的数据类型。

  • 整型的表示形式和转换
表示形式说明转换
二进制以“0B”或“0b”开头(比如0b101)bin():十进制转换为二进制
八进制以 “0o”或“0O”开头(比如0o510)oct():十进制转换为八进制
十进制比如10、20、30int() :接收一个符合整型规范的字符串转换为整型
十六进制以“0x”或“0X”开头(比如0xA7A)hex():十进制转换为十六进制
  • 在Python中当多个变量的值一样时,该值并没有被保留多次,而是这多个变量指向同一个内存,例如:
>>>a = 10
>>>b = 10
>>>c = a
>>>print(id(a), id(b), id(c))
140717869359912 140717869359912 140717869359912

id()可以取出变量的内存地址,从以上结果可以看出3个值一样的变量指向同一地址,那么如果修改了变量a的值,a变量的内存地址和其他变量的内存地址会有什么变化呢,示例如下:

>>>a = 10
>>>b = 10
>>>c = a
>>>print(id(a), id(b), id(c))
140717869359912 140717869359912 140717869359912
>>>a = 20
>>>print(id(a), id(b), id(c))
140717869359944 140717869359912 140717869359912

从以上结果看出变量a的地址变了,b、c的地址没变,因为Python数值型是不可变对象,当改变他的值时,不是修改内存中变量的值,而是把新值放入内存然后修改变量,使得变量指向新值的内存地址。

浮点型:float

  • 浮点型以十进制表示,由整数和小数组成(可以是0)
  • 浮点型可用科学计数法表示,主要针对很大或很小的浮点数
  • 浮点型是双精度的,每个浮点型占据8个字节(64位)

NoneType

  • 数据类型的唯一值是:None

布尔型

  • True 和 False(首字母大写)

列表:list []

  • 可变数据类型,用下标获取值,下标从0开始,也可从-1开始(-1表示倒数第1个列表值,-2表示倒数第2个列表值),列表值也可以包含列表,用多重下标进行访问。
  • 用切片取值,用两个整数,第1个整数为切片开始时的下标,第2个整数为切片结束时的下标,切片向上递增至第2个整数,但不包括他:
>>> strList = ['a', 'b', 'c', 'd']
>>> strList[1:3]
['b', 'c']
>>> strList[:2]
['a', 'b']
>>> strList[2:]
['d']
  • 可用下标改变列表的值:strList[2] = ‘222’
  • 列表连接和复制:与字符串一样也是用符号 ‘+’ 和 ‘*’
  • 可用del语句从列表中删除值:del strList[2]

元组:tuple ()

除以下两点外,元组数据类型与列表数据类型一样:

  1. 元组用()表示,列表用[]表示
  2. 元组是不可变数据类型,列表是可变数据类型

字典:dict {key:value, key:value}

  • 字典中的键值项是不分排序的,键值对输入的顺序并不重要,可用in 或 not in 检查某个键或值是否存在于字典中:
>>> spam = {'color':'red','age':'38'}
>>> 'color' in spma 等价于 'color' in spam.keys()
>>> 'red' in spam.values()

Python关键字

TrueFalseNoneandor
innotisimportclass
defglobalasifelif
elseforwhilepassbreak
returncontinuefromtryexcept
raisewithassertasyncawait
delfinallylambdanonlocalyield

Python内置函数

type()id()int()hex()bin()
oct()input()print()str()float()
list()tuple()dict()bytes()abs()
all()any()ascii()bin()bool()
breakpoint()bytearray()callable()chr()classmethod()
compile()complex()delattr()dir()divmod()
eval()exec()filter()format()frozenset()
getattr()hasattr()hash()help()isinstance()
issubclass()iter()len()locals()map()
max()min()memoryview()next()object()
oct()open()ord()pow()property()
range()repr()reversed()round()set()
setattr()slice()sorted()staticmethod()sum()
super()vars()zip()_import_()
  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现STM32与ESP8266连接OneNet云平台,可以按照以下步骤进行: 1. 首先,硬件上需要准备好STM32和ESP8266模块。将STM32与ESP8266通过串口进行连接,确保两者之间能够进行通信。 2. 在OneNet云平台上创建一个新的设备,获取该设备的产品ID和设备ID。这将用于与OneNet云平台进行通信。 3. 在STM32上编写程序,实现STM32与ESP8266之间的串口通信。使用STM32的串口库函数,通过串口与ESP8266进行数据的发送和接收。 4. 在STM32的程序中,构建符合OneNet云平台要求的数据包,并通过ESP8266发送到OneNet云平台。可以使用HTTP或MQTT协议进行数据输。具体的协议细节可以参考OneNet云平台提供的通信接口文档。 5. 在ESP8266上编写程序,实现与OneNet云平台的通信。根据OneNet云平台提供的API文档,使用ESP8266连接OneNet云平台,并将从STM32接收到的数据OneNet云平台。 6. 在OneNet云平台上配置相应的数据流和数据点,以便接收和展示从STM32和ESP8266发送过来的数据。 7. 在STM32程序中,可以考虑加入循环发送数据的功能,以实现实时监测和控制。 8. 调试完成后,上STM32和ESP8266的程序到对应的硬件上,使其能够连接OneNet云平台。 通过以上步骤,就可以实现STM32与ESP8266连接OneNet云平台的程序。 ### 回答2: 要实现STM32与ESP8266连接OneNet云平台,需要以下步骤: 1. 确保STM32开发板和ESP8266模块都正常工作,并且都有串口通信功能。 2. 在OneNet平台上创建设备和数据流,并获取到设备ID和API Key。 3. 在STM32开发环境中,配置串口通信和WiFi模块。 4. 在STM32中,使用串口与ESP8266模块进行通信。可以使用AT指令控制ESP8266,将其设置为STA(Station)模式并连接到WiFi网络。 5. 在STM32中,使用串口与ESP8266模块进行HTTP通信。可以使用AT指令发送HTTP请求,并将设备数据OneNet云平台。 6. 在STM32中,解析ESP8266返回的HTTP响应,并根据需要进行相应的处理。 7. 在STM32中,根据需要,可以设置定时器来定期上数据OneNet云平台。 8. 在STM32中,可以通过解析OneNet云平台的HTTP响应,获取云平台发送的命令,并根据命令来执行相应的操作。 最后,通过以上步骤,就可以实现STM32与ESP8266连接OneNet云平台并实现数据的上和命令的执行。 ### 回答3: 要将STM32和ESP8266连接OneNet云平台,需要进行以下步骤: 1. 准备硬件: - STM32单片机开发板 - ESP8266 WiFi模块 - 连接线等 2. 在OneNet云平台上创建设备和数据流: - 登录OneNet云平台账号 - 创建一个设备,并为设备添加相应的数据流,用于接收和发送数据 3. 配置ESP8266模块: - 将ESP8266与STM32开发板连接,确保串口通信正常 - 在ESP8266上烧录相关固件,如AT指令固件,可以使用串口助手通过AT指令测试ESP8266的连接和通信功能 4. 编写STM32程序: - 使用适当的开发环境,如Keil或STM32CubeIDE等,创建STM32项目 - 引入相应的库文件,如串口库、网络库等 - 初始化串口和网络连接 - 通过串口与ESP8266进行通信,发送AT指令以连接WiFi,获取IP地址 - 使用HTTP或MQTT等协议,将数据发送到OneNet云平台的设备数据流中 5. 测试连接和通信: - 将STM32开发板上电,并观察串口输出,确保模块正常连接WiFi - 向STM32发送指令来触发数据输 - 在OneNet云平台上监控数据流,验证数据是否成功接收和处理 总结一下,连接STM32和ESP8266到OneNet云平台的关键是通过ESP8266模块建立WiFi连接,然后通过STM32与ESP8266进行串口通信,将数据发送到OneNet云平台的设备数据流中。这样就可以实现STM32与OneNet云平台数据输和通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值