所谓函数,就是为我们提供某种功能的程序。比如我们在入门第一课讲到的print,可以帮我们打印,这个print就是Python内置的一个函数。
下面来一起熟悉一下Python内置的函数及用法。
使用函数时,后面都是加一对圆括号,用来放参数。
1、print()
>>> print('I wanna learn Python.') I wanna learn Python.
要打印时,使用print。要打印的内容两侧外面是一对圆括号,然后是一对单引号或者一对双引号。
再看一个示例:
>>> a=[1,2,3,4,5,6] >>> for i in a: print(i) 1 2 3 4 5 6
分析一下:a是一个列表,值是:1,2,3,4,5,6。通过for循环就可以每次打印a中的一个值。打印时默认没打印一个值,后面跟一个换行符(类似我们在word中使用的回车)。我们可以把a中的所有值打印在一行,且每个值之间可以由我们自行指定一个分割符。看例子:
>>> a=[1,2,3,4,5,6] >>> for i in a: print(i,end=',') 1,2,3,4,5,6,
分析一下:区别在于,我们定义了end,它的值是逗号。之后打印在一行,且每个值之间用逗号隔开。
2、input()
让程序接受你的输入内容,比如:
>>> input() x 'x'
分析一下:
第一行,可以让程序提供给我们一次输入内容的机会;接着我输入了一个字母x,按回车;最后程序把我输入的x打印出来。需要说明的是:input函数接受你输入的值是一个字符串,所以返回的x两侧,带有一对单引号。
如果我输入的是一个数字呢?
>>> input() 5 '5'
即使输入的是数字,返回值得两侧依旧带有一对单引号,证明返回值是一个字符串。
再举个栗子-_-!!
input('请输入你的年龄:') 请输入你的年龄:10 '10'
我们日常使用的软件或者上网时,当有需要我们输入信息时通常都会有提示。这一点Python也可以做到。上面的input函数,在括号内通过一对单引号或者一对双引号就能把提示打印出来。
3、int()
之前我们学过,Python中数字有整数30、浮点数30.25,那怎么把输入的浮点数变为整数呢?
>>> a=30.25 >>> b=int(a) >>> b 30
首先创建变量a并赋值30.25;之后创建变量b并赋值,赋的值是对a取整,就是把a的值变成整数(这里不存在四舍五入)。
4、str()
Python中的int可以把一个浮点数变成整数,Python另一个函数还可以把一个数字变成一个字符串。
>>> c=30.5 >>> d=str(c) >>> d '30.5'
c的值是30.5,而d的值是‘30.5’。c和d在Python中是两个值不相等的变量。
5、len()
计算参数的长度。
>>> e='aaaaa' >>> f=len(e) >>> f 5
e是一个字符串,包含了5个'a',那么len(e)的值就是5,赋值给f,那么f的值就是5。
6、range()
范围值。举个栗子-_-!!
>>> for i in range(1,11): print(i) 1 2 3 4 5 6 7 8 9 10
分析一下:
range(1,11),包括的范围是1到10。
range()函数还可以和len()函数组合使用。看示例:
>>> a=['name','age','address','salary','height'] >>> for i in range(len(a)): print(i,a[i]) 0 name 1 age 2 address 3 salary 4 height
7、abs()
求绝对值函数。
>>> abs(1000) 1000 >>> abs(-124.50) 124.5
8、divmod(a,b)
返回一个元祖(c,d)。其中c=a//b,d=a%b。看示例:
>>> divmod(5,2)
(2, 1)
>>> a=5 >>> b=2 >>> a//b 2 >>> a%b 1
9、用于判断给定的可迭代参数 iterable 中的所有元素是否不为 0、''、False 或者 iterable 为空,如果是返回 True,否则返回 False。
>>>all(['1', '2', '3', '4']) # 列表list,元素都不为空或0 True >>> all(['1', '2', '', '4']) # 列表list,存在一个为空的元素 False >>> all([0,'a',2, 3]) # 列表list,存在一个为0的元素 False >>> all(('1', '2', '3', '4')) # 元组tuple,元素都不为空或0 True >>> all(('1', '2', '', '4')) # 元组tuple,存在一个为空的元素 False >>> all((0, 1,2, 3)) # 元组tuple,存在一个为0的元素 False >>> all([]) # 空列表 True >>> all(()) # 空元组 True
10、enumerate() 函数用于将一个可迭代对象组合,其中的每一个值由两部分组成:可迭代对象的索引和值。一般用在 for 循环当中。
>>> a=['name','age','address','salary','height'] >>> list(enumerate(a)) [(0, 'name'), (1, 'age'), (2, 'address'), (3, 'salary'), (4, 'height')]
看一下与for循环时的一个示例:
>>> a=['name','age','address','salary','height'] >>> m=0 >>> for n in a: print(m,a[m]) m=m+1 0 name 1 age 2 address 3 salary 4 height
如果换做for与enumerate()组合的方式,可以这样写:
>>> a=['name','age','address','salary','height'] >>> for i,m in enumerate(a): print(i,a[i]) 0 name 1 age 2 address 3 salary 4 height
11、ord()
计算机中存有255个ASCII编码,这些编码都是数字,对应数字、大小写英语字母和各类符号。ord()就是把我们熟悉的数字、字母和符号转换为ASCII编码。
>>> ord("A") 65 >>> ord('a') 97 >>> ord('5') 53
12、any()
any() 函数用于判断给定的可迭代参数 是否全部为空对象,如果都为空、0、false,则返回 False,如果不都为空、0、false,则返回 True。
>>> a=['name','age','address','salary','height'] >>> any(a) True >>> b=['name','age','address','salary',''] >>> any(b) True >>> c=[] >>> any(c) False >>> d=['','',''] >>> any(d) False
13、eval()
eval(expression, globals=None, locals=None) --- 官方文档中的解释是,将字符串str当成有效的表达式来求值并返回计算结果。globals和locals参数是可选的,如果提供了globals参数,那么它必须是dictionary类型;如果提供了locals参数,那么它可以是任意的map对象。
用来计算表达式的值,并返回。看示例:
>>> a=10 >>> eval('a*2') 20 >>> eval('a**a') 10000000000 >>> eval('2+10') 12
eval()函数还有其他用途:将字符串str当成有效的表达式来求值并返回计算结果。
语法: eval(source[, globals[, locals]]) -> value
参数:
source:一个Python表达式或函数compile()返回的代码对象
globals:可选。必须是dictionary
locals:可选。任意map对象
看示例:
可以把list,tuple,dict和string相互转化。 ################################################# 字符串转换成列表 >>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]" >>>type(a) <type 'str'> >>> b = eval(a) >>> print b [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]] >>> type(b) <type 'list'> ################################################# 字符串转换成字典 >>> a = "{1: 'a', 2: 'b'}" >>> type(a) <type 'str'> >>> b = eval(a) >>> print b {1: 'a', 2: 'b'} >>> type(b) <type 'dict'> ################################################# 字符串转换成元组 >>> a = "([1,2], [3,4], [5,6], [7,8], (9,0))" >>> type(a) <type 'str'> >>> b = eval(a) >>> print b ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0)) >>> type(b) <type 'tuple'>
14、isinstance()
isstance(a,b),判断a是否属于类型b,是就返回True,否则返回False。看示例:
>>> a=10 >>> isinstance(a,int) True >>> isinstance(a,str) False >>> isinstance(a,(int,str,bool)) True
15、pow()
pow(a,b)。返回a的b次幂。看示例:
>>> pow(2,3)
8
16、sum()
求和函数。看示例:
>>> sum([1,2,3]) 6 >>> sum((1,2,3)) 6 >>> sum([1,2,3],4) 10
17、type()
有两种用法:type(a)或者type(a,b,c)
type(a),返回a的数据类型。看示例:
>>> type('asdf') <class 'str'> >>> type('123') <class 'str'> >>> type(123) <class 'int'> >>> type(12.34) <class 'float'>
type(a,b,c),这个还未弄明白。
18、filter()
过滤序列。格式为filter(a,b)。其中a是过滤函数,b是序列。看示例:
>>> def oushu(n): if n%2==0: return n >>> filter(oushu,[1,2,3,4,5,6,7,8,9,10]) <filter object at 0x000001EBF8D3EE80> >>> print(filter(oushu,[1,2,3,4,5,6,7,8,9,10])) <filter object at 0x000001EBF8D7F630> >>> list(filter(oushu,[1,2,3,4,5,6,7,8,9,10])) [2, 4, 6, 8, 10]
之所以前2个没有返回序列,是因为返回的是一个filter类,需要使用list()函数来形成一个对象。
19、list()
list(),格式为list(a)。a是一个元祖,返回一个列表。看示例:
>>> a=(1,2,3,4,5) >>> list(a) [1, 2, 3, 4, 5]
20、format()
格式化字符串。之前用很大的篇幅讲解字符串的格式化操作。现在看下format的功能。
20.1 不提供参数
>>> "{} {}".format("I","wanna") 'I wanna' >>> "{0} {1}".format("learn","Python.") 'learn Python.' >>> "{0} {1} {0} {1}".format("learn","Python.") 'learn Python. learn Python.'
20.2 提供参数
>>> "姓名:{name},年龄:{age}".format(name="赵云",age=23) '姓名:赵云,年龄:23' >>> intel={"name":"赵云","age":23} >>> "姓名:{name},年龄:{age}".format(**intel)#参数是字典 '姓名:赵云,年龄:23' >>> intel2=['赵云',23] >>> "姓名:{0[0]},年龄{0[1]}".format(intel2) #参数是序列 '姓名:赵云,年龄23'
20.3 格式化数字
数字 | 格式 | 返回结果 | s说明 |
---|---|---|---|
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位,数字2可以改为任意正整数,以下同理** |
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位,** |
-1 | {:+.2f} | -1.00 | 带符号保留小数点后两位,** |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2),** |
5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4),** |
10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4),** |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
0.25 | {:.2%} | 25.00% | 百分比格式,** |
1000000000 | {:.2e} | 1.00e+09 | 指数记法,** |
13 | {:10d} | 13 | 右对齐 (默认, 宽度为10),** |
13 | {:<10d} | 13 | 左对齐 (宽度为10),** |
13 | {:^10d} | 13 | 中间对齐 (宽度为10),** |
11 | '{:b}'.format(11) '{:d}'.format(11) '{:o}'.format(11) '{:x}'.format(11) '{:#x}'.format(11) '{:#X}'.format(11) | 1011
11
13 b 0xb 0XB | 进制,** |
^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制。看示例:
>>> "{:.3f}".format(5.123456) '5.123'
21、locals()
locals() 函数以字典类型b返回当前位置的全部局部变量。
>>> def hanshu(): a=1 b=2 c=10 return locals() >>> hanshu() {'c': 10, 'b': 2, 'a': 1}
22、dict()
用于创建一个字典。有几种用法:
>>> dict() {} >>> dict(name='zhaoyun',age=23,height=200) {'name': 'zhaoyun', 'age': 23, 'height': 200} >>> dict([('name','zhaoyun'),('age',23),('height',200)]) {'name': 'zhaoyun', 'age': 23, 'height': 200} >>> dict(zip(['name','age','height'],['zhaoyun',23,200])) {'name': 'zhaoyun', 'age': 23, 'height': 200}
23、iter()
iter(a),a是一个可迭代对象,生成迭代器。看示例:
>>> a=[1,2,3,4,5] >>> iter(a) <list_iterator object at 0x000001EBF8CE2B00> >>> print(iter(a)) <list_iterator object at 0x000001EBF86E8048> >>> list(iter(a)) [1, 2, 3, 4, 5]
24、next()
返回迭代器的下一个元素。接着上面的例子,继续:
>>> a=[1,2,3,4,5] >>> iter(a) <list_iterator object at 0x000001EBF8CE2B00> >>> b=iter(a) >>> next(b) 1 >>> next(b) 2 >>> next(b) 3
25、sorted()
sorted(a),对可迭代对象a做排序,并返回一个序列。看示例:
>>> a=(3,4,5,1,2,3) >>> b=[3,4,5,1,2,3] >>> c=sorted(a) >>> c [1, 2, 3, 3, 4, 5] >>> d=sorted(b) >>> d [1, 2, 3, 3, 4, 5]
sorted(a,b,c,d),对可迭代对象a做排序。
b是函数,该函数有2个参数,这2个参数都是从a中提取的,
c是排序参数,即从a的元素中,指定那个具体的字段为排序参数,并以此参数排序。
d排序规则。排序规则,reverse = True 降序 , reverse = False 升序(默认)。