%d、%f、字符串格式的方法%s、format和python3.6新特性f-string和类型注解
一、%s
# 1.位置参数的形式 msg = '我叫%s,今年%s,性别%s' % ('帅哥',18,'男') print(msg) # 我叫帅哥,今年18,性别男 # 2.关键字参数的形式 msg = '我叫%(name)s,今年%(age)s,性别%(sex)s' % {"name": "帅哥", "age": 18, "sex": "男"} print(msg) # 我叫帅哥,今年18,性别男
string = "hello" # %s打印时结果是hello print("string=%s" % string) # output: string=hello # %2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打印,所以%2s的打印结果还是hello print("string=%2s" % string) # output: string=hello # %7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串左侧补空格, # 所以%7s的打印结果是 hello print("string=%7s" % string) # output: string= hello # %-7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串右侧补空格, # 所以%-7s的打印结果是 hello print("string=%-7s!" % string) # output: string=hello ! # %.2s意思是截取字符串的前2个字符,所以%.2s的打印结果是he print("string=%.2s" % string) # output: string=he # %.7s意思是截取字符串的前7个字符,当原字符串长度小于7时,即是字符串本身, # 所以%.7s的打印结果是hello print("string=%.7s" % string) # output: string=hello # %a.bs这种格式是上面两种格式的综合,首先根据小数点后面的数b截取字符串, # 当截取的字符串长度小于a时,还需要在其左侧补空格 print("string=%7.2s" % string) # output: string= he print("string=%2.7s" % string) # output: string=hello print("string=%10.7s" % string) # output: string= hello # 还可以用%*.*s来表示精度,两个*的值分别在后面小括号的前两位数值指定 print("string=%*.*s" % (7, 2, string)) # output: string= he
二、%d
num = 14 # %d打印时结果是14 print("num=%d" % num) # output: num=14 # %1d意思是打印结果为1位整数,当整数的位数超过1位时,按整数原值打印,所以%1d的打印结果还是14 print("num=%1d" % num) # output: num=14 # %3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数左侧补空格,所以%3d的打印结果是 14 print("num=%3d" % num) # output: num= 14 # %-3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数右侧补空格,所以%3d的打印结果是14_ (_代表空格,方便展示给你们看) print("num=%-3d" % num) # output: num=14_ # %05d意思是打印结果为5位整数,当整数的位数不够5位时,在整数左侧补0,所以%05d的打印结果是00014 print("num=%05d" % num) # output: num=00014 # %.3d小数点后面的3意思是打印结果为3位整数, # 当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果是014 print("num=%.3d" % num) # output: num=014 # %.0003d小数点后面的0003和3一样,都表示3,意思是打印结果为3位整数, # 当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果还是014 print("num=%.0003d" % num) # output: num=014 # %5.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,再在左侧补空格, # 规则就是补0优先,最终的长度选数值较大的那个,所以%5.3d的打印结果还是 014 print("num=%5.3d" % num) # output: num= 014 # %05.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时, # 由于是05,再在左侧补0,最终的长度选数值较大的那个,所以%05.3d的打印结果还是00014 print("num=%05.3d" % num) # output: num=00014 # 还可以用%*.*d来表示精度,两个*的值分别在后面小括号的前两位数值指定 print("num=%*.*d" % (4, 3, num)) # output: num= 014
三、%f
import math # %a.bf,a表示浮点数的打印长度,b表示浮点数小数点后面的精度 # 只是%f时表示原值,默认是小数点后5位数 print("PI=%f" % math.pi) # output: PI=3.141593 # 只是%9f时,表示打印长度9位数,小数点也占一位,不够左侧补空格 print("PI=%9f" % math.pi) # output: PI=_3.141593 # 只有.没有后面的数字时,表示去掉小数输出整数,03表示不够3位数左侧补0 print("PI=%03.f" % math.pi) # output: PI=003 # %6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够左侧补空格 print("PI=%6.3f" % math.pi) # output: PI=_3.142 # %-6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够右侧补空格 print("PI=%-6.3f" % math.pi) # output: PI=3.142_ # %.2f表示小数点后面精确到2位,整数部分是原值 print("PI=%.2f" % math.pi) # output: PI=3.14 # 还可以用%*.*f来表示精度,两个*的值分别在后面小括号的前两位数值指定 print("PI=%*.*f" % (6, 3, math.pi)) # output: PI=_3.142
四、format
# 三种方式: # 第一种:按顺序接收参数 s1 = '我叫{},今年{},性别{}'.format('帅哥','18','男') print(s1) # 我叫帅哥,今年18,性别男 # 第二种:按索引接收参数 s2 = '我叫{0},今年{1},性别{2},我依然叫{0}'.format('帅哥', '18', '男') print(s2) # 我叫帅哥,今年18,性别男,我依然叫帅哥 # 第三种:按关键字接收参数 s3 = '我叫{name},今年{age},性别{sex}'.format(age='18', name='帅哥', sex='男') print(s3) # 我叫帅哥,今年18,性别男
三、f-string
1、介绍 f-string(formatted string literals):格式化字符串常量,是Python3.6新引入的一种字符串格式化方法,使格式化字符串的操作更加简便。 2、语法 f'xxx' 或 F'xxx' 且以大括号 {} 表明被替换的字段,{}里面可以是字符串或者表达式 3、简单替换字符串:{'字符串'} name = '小白' msg = f'我叫{name},今年{18}岁,性别{"男"}' print(msg) # 我叫小白,今年18岁,性别男 注意:若f使用的是单引号,那么里面的{}若是字符串则应该用双引号,反之一样 4、计算表达式:{表达式} ret = f"1 add 2 is {1+2}" print(ret) # 1 add 2 is 3 5、lambda表达式:{(lambda表达式) (参数)} 注意: lambda表达式的 : 会被f-string误认为是表达式与格式描述符之间的分隔符, 为避免歧义,需要将lambda表达式置于括号 () 内: func = f"my_add result:{(lambda x,y:x+y) (1,2)}" print(func) # my_add result:3 若不加括号则报错: func = f"my_add result:{lambda x,y:x+y (1,2)}" print(func) File "<fstring>", line 1 (lambda x,y) ^ SyntaxError: unexpected EOF while parsing 6、f-string用法很强大,这里只是写出了一些常用的方法,感兴趣可以自己去研究其他用法
五、类型注解
Python是一门动态语言,变量以及函数的参数是不区分类型。比如我们要实现一个数字相加的函数: def my_add(x, y): return x + y 但是这样的坏处是,别人不知道你要做的是数字相加的函数,别人输入字符串,一样是可以得到字符串的拼接的 于是 Python 3 提供了一个新的特性: 类型注解: def my_add(x:int, y:int) -> int: return x + y 语法: 参数:类型 指定函数的参数类型 -> 类型 指定函数的返回值类型。 注意:Python 解释器并不会因为这些注解而提供额外的校验, 也就是说,这些类型注解加不加,对你的代码来说没有任何影响,我一样可以输入字符串的。 只是这么做的好处是: 1.让别人看得更明白 2.当你输入str和float 类型的参数时,虽然一样不会报错可以得出结果,但是IDE工具会有高亮提示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix