所谓函数,就是为我们提供某种功能的程序。比如我们在入门第一课讲到的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、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 升序(默认)。