11.chr(i)
返回 Unicode 码位为整数 i 的字符的字符串格式。实参的合法范围是 0 到 1,114,111(16 进制表示是 0x10FFFF)。
>>> chr(1)
'\x01'
>>> chr(90)
'Z'
>>> chr(0x110000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: chr() arg not in range(0x110000)
>>> chr(0x10ffff)
'\U0010ffff'
12.classmethod修饰符
classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class A(object):
bar = 1
def func1(self):
print ('foo')
@classmethod
def func2(cls):
print ('func2')
print (cls.bar)
cls().func1()
A.func2()# 不需要实例化
13.compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
compile() 函数将一个字符串编译为字节代码。
source -- 字符串或者AST(Abstract Syntax Trees)对象。。
filename -- 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
mode -- 指定编译代码的种类。可以指定为 exec, eval, single。
flags -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。。
flags和dont_inherit是用来控制编译源码时的标志
>>> str = "for i in range(0,10): print(i)"
>>> c = compile(str,'','exec')
>>> c
<code object <module> at 0x7fff3c681b70, file "", line 1>
>>> exec(c)
0
1
2
3
4
5
6
7
8
9
>>> str = "3 * 4 + 5"
>>> a = compile(str,'','eval')
>>> eval(a)
17
mode 实参指定了编译代码必须用的模式。如果 source 是语句序列,可以是 'exec';如果是单一表达式,可以是 'eval';如果是单个交互式语句,可以是 'single'。
网友评论