dir 查看一个变量拥有的方法
print(dir([]))
print(dir((1)))
某个方法属于某个数据类型的变量,就用.调用
如果某个方法不依赖任何数据类型,就直接调用 ----内置函数和自定义函数
对print()的说明
def print(self, *args, sep=' ', end=' ', file=None): # known special case of print file:默认输出到屏幕,如果设置为文件句柄,则输出到文件 sep:打印多个值之间的分隔符,默认为空格 end:每一次打印的结尾,默认为换行符 flush:立即将文件输出到文件流,不做缓存
print('我们是花园',end = '') #指定输出的结束符 print('hahhah',end = '') 结果:我们是花园hahhah #指定输出多个值之间的分隔符 print(1,2,3,4,5,sep='|') #结果:1|2|3|4|5 #file关键字 f = open('file','w') print('aaa',file = f) f.close() #取整除运算符:// i = 101 print(i/2,i//2)#结果:50.5 50 #进度条的打印 flush---将缓存里面的内容立即输出到标准输出流(这里是sys.stdout, 也就是默认的显示器) import time for i in range(0,101,2): time.sleep(0.1) char_num = i//2 per_str = ' %s%% : %s '%(i,'*'*char_num) if i ==100 else ' %s%% : %s'%(i,'*'*char_num) print(per_str,end = '',flush='true') print('加载完毕') 小越越 : 可以把光标移动到行首但不换行
内置函数eval、exec、single
1.exec和eval都可以执行字符串类型的代码
2.eval()有返回值,exec()没有返回值
3.eval()只能用在明确知道要执行的代码是什么
4.exec一般都用于流程控制
exec('print(123)') #123 eval('print(123)') #123 print(eval('1+2+3+4')) #10-----eval()有返回值 print(exec('1+2+3+4')) #None----exec()没有返回值
code='''for i in range(5): print(i*'*')''' exec(code) 结果: * ** *** ****
compile 将字符类型的代码编译,代码对象能够通过exec来执行,或者可以通过eval来求值
参数说明: 1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。 2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。 3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。 code1 = 'for i in range(0,3): print (i)' compile1 = compile(code1,'','exec') exec (compile1)
#简单求值表达式用eval code2 = '1+2+3+4' compile1 = compile(code2,'','eval') print(eval(compile1)) #结果:10 #用户交互用single code3 = 'name=input("input name:")' compile3 = compile(code3,'','single') exec(compile3)# 交互时的执行用exec() print(name)