1.实验平台
开发板:移远EC600X_QuecPython_EVB_V2.0
开发工具:QPYcom
2.格式化字符串
一个常见的问题是怎么输出格式化字符串,在c语言中我们常用printf输出格式化字符串,而在python中常用的格式化字符串有下面两种:
(1)占位符
跟c语言一样可以在print中使用占位符,常使用的占位符如下:
%d | 整型 |
%r | repr 显示raw data |
%s | 字符串 |
%f | 浮点型 |
%x | 十六进制 |
测试代码如下:
str1 = "hello world"
Pi = 3.14159265
numbers = 77
print("numbers = %d,PI= %f,string = %s,hex = %x,repr = %r"%(numbers,Pi,str1,numbers,str1))
通过工具QPYcom_V2.0下载到开发板中并执行代码,结果如下:
example.exec('usr/micro_python_test.py')
numbers = 77,PI= 3.141593,string = hello world,hex = 4d,repr = 'hello world'
可以发现%运算符是用来格式化字符串,使用% + 不同的后缀可以实现格式化不同类型。其中要注意%s和%r的用法。在使用%f时需要注意丢失精度问题。
(2)format 方法
format方法是一种string格式化方法,使用{x}来代替%占位符。具体用法如下:
str1 = "hello world"
Pi = 3.14159265
numbers = 77
#print("numbers = %d,PI= %f,string = %s,hex = %x,repr = %r"%(numbers,Pi,str1,numbers,str1))
print("numbers = {0},PI= {1},string = {2}".format(numbers,Pi,str1))
#结果如下:
example.exec('usr/micro_python_test.py')
numbers = 77,PI= 3.14159265,string = hello world
可以看到PI的精度被完整保留下来了。
(3)f-string
f-string是另一种格式化字符串的方法,其优点是只要使用{xxxx}就可以实现xxxx变量的替换,并且还可以控制精度比如:{Pi:05.2f} 测试结果如下:
str1 = "hello world"
Pi = 3.14159265
numbers = 77
#print("numbers = %d,PI= %f,string = %s,hex = %x,repr = %r"%(numbers,Pi,str1,numbers,str1))
#print("numbers = {0},PI= {1},string = {2}".format(numbers,Pi,str1))
print(f"numbers = {numbers},PI= {Pi:05.2f},string = {str1}")
#测试结果如下:
example.exec('usr/micro_python_test.py')
Traceback (most recent call last):
File "/usr/micro_python_test.py", line 12
SyntaxError: invalid syntax
实际测试报错,询问客服EC600X并不支持f-string格式化字符串。
3.总结
实际开发中使用格式化字符串debug相当便利,使用占位符还是format方法,仁者见仁智者见智啦。当然如果您不知道该用什么,使用%s将永远起作用,它可以把任何数据类型转换成字符串。