python3--内置函数
内置函数:
截止到python 3.6.2 版本,现在python一共提供了68个内置函数;即python提供给你直接可以拿来使用的所有函数。
(红色字体为重点掌握内置函数)
上面便是内置函数列表,按首字母排序,难免看起来混乱无序,不便于记忆;
下面把这些函数分成了6大类。
由于学习进度原因,此处只写标红的四大块(56个方法)~
作用域相关:
基于字典的形式获取全局变量和局部变量
globals()——获取全局变量的字典(以字典类型返回当前位置的全部全局变量。)
a='runoob'
print(globals()) #globals 函数返回一个全局变量的字典,包括所有导入的变量。
{'__builtins__': , '__name__': '__main__', '__doc__': None, 'a': 'runoob', '__package__': None}
globals()
locals()——获取执行本方法所在命名空间内的局部变量的字典(以字典类型返回当前位置的全部局部变量;对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。)
>>>def runoob(arg): #两个局部变量:arg、z
... z = 1...print(locals())
...>>> runoob(4)
{'z': 1, 'arg': 4} #返回一个名字/值对的字典
locals()
其他:
字符串代码类型的执行:
eval( ) 函数用来执行一个字符串表达式,并返回表达式的值。
>>>x = 7
>>> eval( '3 * x')21
>>> eval('pow(2,2)')4
>>> eval('2 + 2')4
>>> eval("n + 4")85
eval()
exec() 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。(exec 返回值永远为 None)
>>>exec('print("Hello World")')
Hello World#单行语句字符串
>>> exec("print ('runoob.com')")
runoob.com#多行语句字符串
>>> exec ("""for i in range(5):
... print ("iter time: %d" % i)
...""")
iter time: 0
iter time:1iter time:2iter time:3iter time:4
exec()
x = 10expr= """z = 30
sum = x + y + z
print(sum)"""
deffunc():
y= 20
exec(expr)exec(expr, {'x': 1, 'y': 2})exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
func()
输出结果:60
33
34
exec()
code = '''import os
print(os.path.abspath('.'))'''code= '''print(123)
a = 20
print(a)'''a= 10
exec(code,{'print':print},)print(a)
指定global参数
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'。
>>> #流程语句使用exec
>>> code1 = 'for i in range(0,10): print (i)'
>>> compile1 = compile(code1,'','exec')>>> exec(compile1)1
3
5
7
9
>>> #简单求值表达式用eval
>>> code2 = '1 + 2 + 3 + 4'
>>> compile2 = compile(code2,'','eval')>>>eval(compile2)>>> #交互语句用single
>>> code3 = 'name = input("please input your name:")'
>>> compile3 = compile(code3,'','single')>>> name #执行前name变量不存在
Traceback (most recent call last):
File"", line 1, in name
NameError: name'name' is notdefined>>> exec(compile3) #执行时显示交互命令,提示输入
please input your name:'pythoner'
>>> name #执行后name变量有值
"'pythoner'"
输入输出相关:
input()输入
s = input("请输入内容 :") #输入的内容赋值给s变量
print(s) #输入什么打印什么。数据类型是str
print()输出
def print(self, *args, sep=' ', end='\n', file=None): #known special case of print
"""print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
sep: 打印多个值之间的分隔符,默认为空格
end: 每一次打印的结尾,默认为换行符
flush: 立即把内容输出到流文件,不作缓存"""
print()源码剖析
importtimefor i in range(0,101,2):
time.sleep(0.1)
char_num= i//2 #打印多少个'*'
per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)print(per_str,end='', flush=True)#\r 可以把光标移动到行首但不换行
打印进度条
数据类型相关:
type(x) 返回变量x的数据类型
内存相关:
id(x) x是参数,返回一个变量的内存地址
hash(x) x是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。
t = (1,2,3)
l= [1,2,3]print(hash(t)) #可hash
print(hash(l)) #会报错
'''结果:
TypeError: unhashable type: 'list''''
hash 实例
hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。
每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。
文件操作相关:
open() 打开一个文件,返回一个文件操作符(文件句柄)
可以用encoding指定编码.
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
操作文件模式
模块操作相关:
__import__ 导入一个模块
import time
os = __import__('os')print(os.path.abspath('.'))
帮助方法:
在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出
或者直接执行help(o),o是参数,查看和变量o有关的操作。
调用相关:
callable(n),n是参数,看这个变量是不是可调用。
如果n是一个函数名,就会返回True
def func():pass
print(callable(func)) #参数是函数名,可调用,返回True
print(callable(123)) #参数是数字,不可调用,返回False
callable 实例
查看参数所属类型的所有内置方法:
dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量
print(dir(list)) #查看列表的内置方法
print(dir(int)) #查看整数的内置方法
和数字相关:
数字:
数据类型相关:bool,int,float,complex
进制转换相关:bin,oct,hex
数学运算相关:abs,divmod,min,max,sum,round,pow
和数据结构相关:
序列:
列表和元组相关的:list和tuple
字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr
ret = bytearray('alex',encoding='utf-8')print(id(ret))print(ret[0])
ret[0]= 65
print(ret)print(id(ret))
bytearray
ret = memoryview(bytes('你好',encoding='utf-8'))print(len(ret))print(bytes(ret[:3]).decode('utf-8'))print(bytes(ret[3:]).decode('utf-8'))
输出结果:6你
好
Process finished with exit code 0
memoryview
序列:
reversed
l = (1,2,23,213,5612,342,43)print(l)print(list(reversed(l)))
执行结果:
(1, 2, 23, 213, 5612, 342, 43)
[43, 342, 5612, 213, 23, 2, 1]
slice
l = (1,2,23,213,5612,342,43)
sli= slice(1,5,2)print(l[sli])
执行结果:
(2, 213)
Process finished with exit code 0
数据集合——字典和集合:dict,set,frozenset
数据集合:len,sorted,enumerate,all,any,zip,filter,map
务必重点掌握:
其他:input,print,type,hash,open,import,dir
str类型代码执行:eval,exec
数字:bool,int,float,abs,divmod,min,max,sum,round,pow
序列——列表和元组相关的:list和tuple
序列——字符串相关的:str,bytes,repr
序列:reversed,slice
数据集合——字典和集合:dict,set,frozenset
数据集合:len,sorted,enumerate,zip,filter,map
官方参考文档: