1.其他的一些内置函数
汇总如下:
- dir & help :help 是比 dir 更详细的帮助
dir 用来获取一个数据类型所拥有的全部方法,help打印一个关键字或函数的用法,没有返回值;
print(dir(int))
help(str)
- callable(): 判断一个变量是否可以被调用 (可以用来判断一个变量到底是一个函数还是一个值,返回True & False;
例如:
print(callable(print))
a = 1
print(callable(a))
输出为:
- print() 函数:输出,
举例说明end, sep, file参数的作用:
print('test\n', end='')
print('test', end='') # end关键字指定每条print语句的结束符,默认以换行结束
print(1,2,3, sep='-') # sep关键字用来指定每个输出字符的连接方式
# file参数用来将内容输出到指定的文件中
f=open('file', 'w')
print('test',file=f)
f.close()
输出如下:
flush 参数说明:
f = open('file','w',encoding='utf-8')
print('123456',file=f)
# f.close()
1.在进行写文件操作时,一般情况下会将需要写入文件的字符先写入缓存,
等到确定不再写入字符时,再将缓存中的字符写入文件,
而当flush=True时,是直接将字符立即写入文件,不做缓存
2. flush参数主要是刷新, 默认flush = False,不刷新;
如上面例子,print到f中的内容先存到内存中,当文件对象关闭时才把内容输出到 file 中;
而当flush = True时它会立即把内容刷新存到 file 中。
- exec & eval 函数:执行字符串形式的python语句
# 相同:都可以执行字符串形式的python语句
exec('print(123)')
eval('print(123)')
# 不同:eval有返回值,返回值是执行的python语句的结果;exec没有返回值
print(exec('1+2+3'))
print(type(eval("'abc'+'ef'")))
5. compile() 函数:将字符串形式的代码编译,使其能通过exec语句来执行或eval进行求值。
说明:注意:compile()将编译后的语句执行,会提高代码的执行速度,只有在同一代码多次执行的时候,这种速度才会体现
几个例子:
1.流程控制
code1 = 'for i in range(10): print(i)'
# compile如不是从文件中读取代码,则第二个参数需要传递一个可辨认的字符;
# 若是从文件中读取代码,则第二个参数传递文件名
compile1 = compile(code1, '', 'exec')
exec(compile1)
# 2.简单计算
code2 = '1+2+3'
compile2 = compile(code2, '', 'eval')
print(eval(compile2))
# 3.所执行语句中含有交互语句: 使用 single 参数
code3 = 'name = input("Please input your name:")'
# 若所执行语句中含有交互语句,则传参时使用 single 参数
compile3 = compile(code3, '', 'single')
# print(name) # 执行前name不存在
exec(compile3) # 执行时显示交互命令,提示输入
# print(name) # 执行后name有值
"""
在执行前 name 没有接受到用户输入,因此name不存在,所以在执行前输出name时报错;
在执行后 name 实际上已经存在与内存中了,所以可以正常输出不报错;
虽然编辑器提示语法错误,但是实际上是可以正确执行的。
"""
2.迭代器/生成器相关的函数
汇总如下:
1.range() 函数:
说明:range()的结果是一个可迭代对象而不是一个迭代器;
2.next(迭代器) == 迭代器.next()
返回迭代器中的一个值;
3.iter(可迭代对象) == 可迭代对象.iter()
返回一个迭代器;
3.作用域相关函数
汇总如下: