这一篇教程继续补充一些内容。
第五部分、字符串格式化
之前我们接触过简单的字符串格式化方法,通过转换说明符%标记转换内容的位置,然后通过操作符%,将后方的内容转换到标记的位置。
实际上,转换说明符的组成包括:%[转换标志:+,-,”,0][最小字段宽度][.精度值]转换类型
%:转换说明符的开始的标记
转换标志(可选):-表示左对齐;+表示转换后的内容前方加上正负号;’ ‘(空格)表示正数前方保留一个空格;0表示如果转换位置位数不够时,用0填充。
最小字段宽度(可选):转换后字段的最小宽度,如果不足自动用空格补齐;如果最小字段宽度值为“*”,则从元组中读取。
.精度值:如果转换内容为数字,精度值表示保留的小数位数;如果转换内容为字符串,精度值表示最大宽度。
转换类型:
- i/d:带符号的十进制整数
- o:不带符号的八进制
- u:不带符号的十进制
- x/X:不带符号的十六进制(x为小写,X为大写)
- e/E:科学计数法的浮点数(e为小写,E为大写)
- f/F:十进制浮点数
- g/G:指数大于等于-4但小于精度值时,等同于f/F;否则,等同于e/E。
- C:单字符(整数或单个字符)
- r:字符串(非字符串时自动使用repr函数转换)
- s:字符串(非字符串时自动使用str函数转换)
- %:取消%转义(输出一个“%”字符)
接下来,我们看一些示例代码,加深理解。
示例代码:(最小字段宽度)
print('%2s' % 123456,'/',sep='') # 最小字段宽度(超过长度) print('%8s' % 123456,'/',sep='') # 最小字段宽度(长度不足) print('%*s' % (8,123456),'/',sep='') # 最小字段宽度(*) # 显示输出结果为:123456/ # 显示输出结果为: 123456/ # 显示输出结果为: 123456/
示例代码:(.精度值)
print('%.2f' % 3.14159) # 精度值(浮点数) print('%.2s' % '3.14159') # 精度值(字符串) # 显示输出结果为:3.14 # 显示输出结果为:3.
示例代码:(转换标志)
print('%8.2f' % 3.14159,'/',sep='') # 未左对齐 print('%-8.2f' % 3.14159,'/',sep='') # 左对齐 # 显示输出结果为: 3.14/ # 显示输出结果为:3.14 / print('%+d是一个正数' % 666) # 加号 print('%+d是一个负数' % -666) # 加号 # 显示输出结果为:+666是一个正数 # 显示输出结果为:-666是一个负数 print('% d是一个正数' % 666) # 空格 print('% d是一个负数' % -666) # 空格 # 显示输出结果为: 666是一个正数 # 显示输出结果为:-666是一个正数 print('%08d是一个8位数' % 666) # 填充0 # 显示输出结果为:00000666是一个8位数
第六部分、执行字符串语句
如果想在Python中动态的执行一些代码,我们可以使用内置函数exec()和eval()。
示例代码:
exec('print(\'语句被执行了!\')')
上方代码会执行print语句。
但是,这样执行语句会有不安全因素。
示例代码:(异常示例)
exec('len=1') len('abc')
上方代码,因为执行了语句len=1,导致内置函数len()失效,从而程序抛出异常。
TypeError: ‘int’ object is not callable
类型错误:整数对象不能调用
显然,这样执行字符串中的语句非常不安全。
我们可以把执行字符串代码的语句放在字典中,让字符串代码具有独立的作用域(命名空间)。
示例代码:
scope = {} exec('len=1', scope) print(scope.keys()) # 显示输出结果为:dict_keys(['__builtins__', 'len']) print(scope['len']) # 显示输出结果为:1 print(len('abc')) # 显示输出结果为:3
当然,也可以执行其他语句,比如一个计算字符串长度的语句。
示例代码:
scope = {} exec('code=len(\'小楼喜欢苍老师!\')', scope) print(scope.keys()) # 显示输出结果为:dict_keys(['__builtins__', 'code']) print(scope['code']) # 显示输出结果为:8
exec()函数可以执行语句,而eval()函数可以计算表达式。
示例代码:
scope = {'x':3,'y':6} print(eval('x*y', scope))# 显示输出结果为:18
第七部分、函数说明
如果想为函数添加说明文档,除了使用“#”进行注释,还可以在def语句后面直接写入说明字符串。
def get_area(width, height): '这是一个计算面积的函数。' return width * height
当一个函数添加了文档,我们可以通过调用函数的__doc__属性查看文档。
print(get_area.__doc__) # 显示输出结果为:这是一个计算面积的函数。
而且,我们还可以使用内置函数help()进行查看。
help(get_area)
上方这句代码会显示输出以下结果:
Help on function get_area in module __main__:
get_area(width, height)
这是一个计算面积的函数。
本节知识点:
1、字符串格式化
2、执行字符串语句
3、函数说明
本节英文单词与中文释义:
1、scope:作用域
2、area:面积
3、main:主要
转载请注明:魔力Python » Python3萌新入门笔记(25)