一、 range 数值列表生成器
常与for循环搭配使用,产生一个数值列表生成器,数值范围由range参数控制,生成器被调用时才显示具体数值内容,节省内存空间。
# python 3.* 以后,xrange取消 # range直接生成一个生成器,调用的时候才显示具体值 a = range(0,5) print(a,type(a)) # range(0, 5) <class 'range'> # 调用时显示具体值 for i in range(0,5): print(i,end=' ') # 0 1 2 3 4 print() # 设置跳步 for i in range(0,5,2): print(i,end=' ') # 0 2 4 print() # 默认从0开始 for i in range(5): print(i,end=' ') # 0 1 2 3 4 print() # 开始值比结束值大,无返回值 for i in range(5,2): print(i) # None
二、 bytearray 生成bytes序列
函数返回一个bytearray对象,它是一个可变bytes序列,序列中的元素范围是[0,255],调用时显示对象内具体值。
# 如果参数为可迭代类型,则元素必须是0~255的整数,返回一个字节数组。
# 如果参数为整数,则返回一个长度为参数的初始化数组,元素全部为:\x00。
# 如果参数为空,则返回一个空字节数组:b''。
# 如果参数是str,按指定的编码方式,将字符串转换成字节序列。
# 生成一个bytesarray对象,调用时显示具体数值 b = bytearray([1,4,5]) print(b,type(b)) # bytearray(b'\x01\x04\x05') <class 'bytearray'> for i in b: print(i,end=' ') print() # 1 4 5 # 如果参数为可迭代类型,则元素必须是0~255的整数,返回一个字节数组 print(bytearray(range(1,5))) # bytearray(b'\x01\x02\x03\x04') # 如果参数为整数,则返回一个长度为参数的初始化数组 print(bytearray(5)) # bytearray(b'\x00\x00\x00\x00\x00') # 如果参数为空,则返回一个空字节数组 print(bytearray()) # bytearray(b'') # 如果参数是str,按指定的编码方式,将字符串转换成字节序列 print(bytearray('name',encoding='utf_8')) # bytearray(b'name') # bytes序列,可以通过decode方法,转换成str s_bytes = bytearray('4358',encoding='utf-8') print(s_bytes,type(s_bytes)) # bytearray(b'4358') <class 'bytearray'> c = s_bytes.decode() print(c,type(c)) # 4358 <class 'str'>
注意:bytes序列,可以通过decode方法,转换成str。
三、 chr 与 ord
(一) chr 由ASCII码值取ASCII字符,参数int范围[0,255],返回str。
# chr返回ASCII码值对应的字符,参数范围[0,255]。 print(chr(0),type(chr(0))) # <class 'str'> print(chr(255),type(chr(255))) # ÿ <class 'str'> # ASCII中,48~57,是数值0~9。 print(chr(48),type(chr(48))) # 0 <class 'str'> print(chr(57),type(chr(57))) # 9 <class 'str'> # ASCII中,65~90,是大写英文字母。 print(chr(65),type(chr(65))) # A <class 'str'> print(chr(90),type(chr(90))) # Z <class 'str'> # ASCII中,97~122,是小写英文字母。 print(chr(97),type(chr(97))) # a <class 'str'> print(chr(122),type(chr(122))) # z <class 'str'>
(二) ord 与chr正相反,由ASCII字符取ASCII码值,参数str,返回[0,255]内int。
# ord返回ASCII码字符对应的数值,与chr正相反。 print(ord('0'),type(ord('0'))) # 48 <class 'int'> print(ord('9'),type(ord('9'))) # 57 <class 'int'> print(ord('A'),type(ord('A'))) # 65 <class 'int'> print(ord('Z'),type(ord('Z'))) # 90 <class 'int'> print(ord('a'),type(ord('a'))) # 97 <class 'int'> print(ord('z'),type(ord('z'))) # 122 <class 'int'>
P.S.:ASCII中,48~57是数值0~9;65~90是大写英文字母; 97~122是小写英文字母。
四、查看对象、方法
(一) dir() 查看对象和方法名
不带参数时,显示当前范围的变量、方法和类名列表;带参数时,显示参数的属性、方法名列表。
# 不带参数时,显示当前范围的变量、方法和类名列表。 a = 1243 print(dir()) '''['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a']''' # 带参数时,显示参数的属性、方法名列表。 # import time # print(dir(time)) '''['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']'''
(二) help() 查看全部方法名及内容
根据所带参数不同,可以显示模块的帮助文档、方法说明、方法操作方法等信息。
import time help(time) # 显示全部time模块的帮助内容 help(abs) # 显示abs方法的简单说明 '''abs(x, /) Return the absolute value of the argument.''' a = [1,2,3] help(a) # 显示list的操作方法 help(a.append) # 显示append方法的简单说明 '''append(...) method of builtins.list instance L.append(object) -> None -- append object to end '''
五、format 字符串格式化
(一)使用{num}占位,num可以默认按顺序匹配,也可用数字指定:0表示第一个数、1表示第二个数,一个参数可以使用多次。
name = 'lucy' age = 5 # format格式化字符串 s = '{} is young!'.format(age) print(s) # 5 is young! # 字符串内括号无参数,默认按顺序匹配 print('{} is {} years old!'.format(name,age)) # lucy is 5 years old! # 可以接受不限个参数,位置可以不按顺序,可以不用或者用多次 # 字符串参数使用{num}表示,0表示第1个参数,1表示第2个参数指定参数 print('{0}:{1} is {0} years old!'.format(age,name)) # l5:lucy is 5 years old! # 字符串内大括号,单用时作为占位符,两遍{{}}进行转义 print('{{}}'.format()) # {} print('{}'.format(1)) # 1
(二)format函数使用格式限定符(:),对元素进行格式控制:
# 填充与对齐:^、<、>分别表示居中、靠右、靠左,后面用数字表示宽度。
# 填充与对齐 # ^、<、>分别表示居中、靠右、靠左,后面用数字表示宽度 print('{:^8}'.format('mid')) # mid print('{:>8}'.format('rgt')) # rgt print('{:<8}'.format('lef')) # lef # 默认空格填充,:后面可以带填充字符,但只能是一个字符 print('{:0^8}'.format('mid')) # 00mid000 print('{:*>8}'.format('rgt')) # *****rgt print('{:$<8}'.format('lef')) # lef$$$$$
# float类型精度:.d表示整体位数,.df表示小数点后位数。
# float类型精度 # .d表示整体精度,.df表示小数点精度 print('{0}-->{0:.5}'.format(3.1415926)) # 3.1415926-->3.1416 print('{0}-->{0:.5f}'.format(3.1415926)) # 3.1415926-->3.14159 print('{0}-->{0:.5}'.format(26.888888)) # 26.888888-->26.889 print('{0}-->{0:.5f}'.format(26.888888)) # 26.888888-->26.88889
# 数字进制:使用b,d,o,x分别表示二进制、十进制、八进制、十六进制。
# 使用b,d,o,x控制进制 s = '十进制数{0:d}:十六进制是{0:x}、八进制是{0:o}、二进制是{0:b}'.format(17) print(s) # 十进制数17:十六进制是11、八进制是21、二进制是10001
# 大数值:使用逗号,自动分隔;使用科学技术法e表示。
# 使用逗号,大数值自动分隔 print('{:,}'.format(873598475984375983)) # 873,598,475,984,375,983 # 用e表示科学计数法 print('{:.4e}'.format(87483947389)) # 8.7484e+10
# 百分数: 使用%将小数按百分数显示,注意:.2%表示百分数的小数取两位,.2f%写法会报错。
# %将小数按百分数形式显示,注意:.2%表示百分数的小数取两位 print('{:.2%}'.format(0.25)) # 25.00%
六、 id 获得对象的内存地址
# a is b 与 id(a)==id(b) 是等价的,表明a与b的内存地址相同。
a = 1 b = 1 c = b print(a is c) # True print(id(a),id(b),id(c)) # 1664741168 1664741168 1664741168
七、 globals 和 locals
(一) globals() 获得全部全局变量
(二) locals() 获得全部局部变量
浙公网安备 33010602011771号