python(六)内置函数
一、函数知识补充
函数不设置值,默认返回None;函数中参数都是按引用传递,函数里修改了参数,原始参数也会修改。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
li = [11, 22, 33, 44]def f1(arg): arg.append(55)ret = f1(li)print(ret)# 执行结果: None#把li重新赋值,f1函数没有设置返回值,默认返回None,所以结果应该是Noneprint(li)# 执行结果:[11, 22, 33, 44, 55]# 说明:函数中参数都是按引用传递。如果你在函数里修改了参数,那么原始的参数也被改变了。 |
二、内置函数
callable(object)
中文说明:检查对象object是否可调用。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
注意:类是可调用的,而类的实例实现了__call__()方法才可调用。
示例:
|
1
2
3
4
5
6
7
8
9
|
>>> def f1(arg):... arg.append(55)... >>> f2 = 11>>> >>> print(callable(f1))True>>> print(callable(f2))False |
chr(i)
中文说明:返回整数i对应的ASCII字符。与ord()作用相反。
参数x:取值范围[0, 255]之间的正数。
|
1
2
3
4
5
6
|
>>> n = 66>>> print(chr(n))B>>> n = 67>>> print(chr(n))C |
ord(i)
中文说明:以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值
|
1
2
3
4
|
>>> ord("J")74>>> ord("K")75 |
ord()与chr()使用实例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
生成随机验证码:import randomli = []while True: for i in range(6): temp = random.randrange(65,91) #随机生成65-90的数字,这是ASCII中A-Z中的对应数字 c = chr(temp) #通过chr()方法将数字转换成字母 li.append(c) #加入到列表中,生成一个六位的验证码 result = "".join(li) #通过join转换成字符串输出 print(result)#随机验证码优化,字母和数字随机出现import randomli = []for i in range(6): #验证码是六位循环6次,通过append方法生成六个字母或数字 r = random.randrange(0, 5) #r随机生成0-5的数字,只要r等于2或4,则产生数字,否则则产生字母。 if r == 2 or r == 4: #因为每次随机生成的数可能是2或4,故此每一位都有可能生成数字或字母。 num = random.randrange(0, 10) li.append(str(i)) else: temp = random.randrange(65, 91) c = chr(temp) li.append(c)result = "".join(li)print(result) |
compile()
中文说明:把字符串编译城python代码
eval()
中文说明:执行表达式,有返回值
exec()
中文说明:执行python代码或字符串没有返回值,如果接收的是字符串就先编译再执行,如果是python代码就直接执行
eval和exec实例:
|
1
2
3
4
|
>>> print(exec("7+8"))None>>> print(eval("7+8"))15 |
dir()
中文说明:快速查看对象提供了哪些功能
实例:
|
1
2
3
|
>>> dir(list)['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] |
help()
中文说明:显示更详细的帮助信息
实例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
>>> help(dict)Help on class dict in module __builtin__:class dict(object) | dict() -> new empty dictionary | dict(mapping) -> new dictionary initialized from a mapping object's | (key, value) pairs | dict(iterable) -> new dictionary initialized as if via: | d = {} | for k, v in iterable: | d[k] = v |
isinstance()
中文说明:判断对象是不是某个类的实例,如果是,则返回True。不是,返回False
实例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
li = [11, 22, 33, 44, [55, 66, 77, 88]]for i in li: if isinstance(i,list): for v in i: print(v) else: print(i) |
说明:嵌套列表,想要显示11,22,33,44,55,66,77,88这样的结果只一个for循环是不行的,这时可以判断如果i的值是list,就再接一个for循环输出。
divmod()
中文说明:求出a除以b的商和余数,并返回到一个集合中。
实例:
|
1
2
3
4
5
6
|
r = divmod(97, 10)print(r[0])print(r[1])r,r1 = divmod(97,10)print(r)print(r1) |
例如在浏览博客的时候需要对文章进行分页显示,97篇文章,每页显示10篇,通过divmod可以求出商和余数,如果余数为0则页数为商,否则页数就是商加1
filter()
中文说明:循环循环第二个参数,让每个循环元素执行函数,如果函数返回值True,表示元素合法。
实例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
def f2(a): if a > 22: return Trueli = [11, 22, 33, 44, 55]#filter,循环循环第二个参数,让每个循环元素执行函数,如果函数返回值True,表示元素合法。ret = filter(f2, li)print(list(ret))执行结果为:[33, 44, 55]提示:filter(f2,li) 第二个参数li可以是列表、字典等可迭代的数据,循环第二个参数,把值传给第一个参数(函数)里去。可以用来筛选list、dict中符合条件的内容。#lambda表达式自动returnf1 = lambda a: a > 30ret = f1(10)print(ret)li = [11, 22, 33, 44, 55]result = filter(lambda a: a > 33, li)print(list(result)) |
map()
中文说明:map(函数,可迭代的对象(可以for循环的东西)),想对列表字典等进行批量处理的时候,比如统一加100等
实例:
|
1
2
3
4
5
6
7
8
9
|
def f1(a): return a + 100li = [11, 22, 33, 44, 55]n = (map(f1, li))print(list(n))lambda 表达式使用:li = [11, 22, 33, 44, 55]n = map(lambda a: a + 100, li)print(list(n)) |
filter和map的区别:
filter:函数返回True,将元素添加到结果中
map: 将函数返回值添加到结果中
hash()
中文说明:生成一个值的hash值
例:
|
1
2
3
|
s = "kkk"print(hash(s))dic = {"akdflakjdfklajlkjakldflllllllllllldjjjjjjjjjjjjjjsssssss" : 1} |
提示:在内存中存的时候不会把这么长的key存进去,而是把key求出hash值,存到内存中。所有语言都是这样用的。
max() 最大值
sum() 求和
min() 最小值
reversed() 反转
round() 四舍五入
slice() 切片
sorted(li) 排序
在python2中,len()求字符串长度,是通过字节的方式,在python3中是通过字符的方式。
|
1
2
3
4
5
6
|
s = "李杰"print(len(s))#python3中通过字节的方式求长度。s = "李杰"b = bytes(s, encoding='utf-8')print(len(b)) |
python(六)内置函数的更多相关文章
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理
python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...
- python基础——内置函数
python基础--内置函数 一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...
- 如何查看Python的内置函数
经常调用的时候不知道python当前版本的内置函数是哪些,可以用下面的指令查看: C:\Users\Administrator>python Python 2.7.11 (v2.7.11:6d1 ...
- Python的内置函数
python的内置函数一共有68个,下面将简单介绍各个函数的功能. abs() dict() help() min() setattr() all() dir() hex() next() slice ...
- python print()内置函数
啦啦啦啦啦啦,我又来了,学习任何东西都得坚持,我一定的好好加油!!! 今天来说说print()函数,前边我们已经用过好好多次啦,现在来学习哈吧!!! Python的内置函数,print() print ...
- Python入门-内置函数一
什么是内置函数?就是python给你提供的拿来直接用的函数,比如print,input等等,截止到python版本3.6.2 python一共提供了68个内置函数,他们就是python直接提供给我们的 ...
- Python 集合内置函数大全(非常全!)
Python集合内置函数操作大全 集合(s).方法名 等价符号 方法说明 s.issubset(t) s <= t 子集测试(允许不严格意义上的子集):s 中所有的元素都是 t 的成员 s ...
- Python字典内置函数和方法
Python字典内置函数和方法: 注:使用了 items.values.keys 返回的是可迭代对象,可以使用 list 转化为列表. len(字典名): 返回键的个数,即字典的长度 # len(字典 ...
随机推荐
- 实验验证redis的快照和AOF
安装配置redis http://www.cnblogs.com/myrunning/p/4222385.html 验证redis的主从复制 http://www.cnblogs.com/myrunn ...
- bzoj1222: [HNOI2001]产品加工--DP
DP神题orz dp[i]表示机器1工作i小时,机器2工作dp[i]小时 那么对于每个任务: 选1:dp[i]=dp[i-a]; 选2:dp[i]=dp[i]+b; 选1+2:dp[i]=dp[i-c ...
- 将Excel数据导入mysql数据库的几种方法
将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...
- 【iCore3 双核心板】例程十五:USB_CDC实验——高速数据传输
实验指导书及代码包下载: http://pan.baidu.com/s/1gemYjz9 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- ssh增加密匙登录
使用要创建登录密匙的账号登录 生成密匙 #ssh-keygen -t rsa 生成时提示输入密码,如果不输入,则直接回车即可,如果输入,将在无密匙登陆时要求输入该密码 进入生成目录.ssh #cd ~ ...
- tableView主从表在storyboard连线是 Selcetion Segue和Accessory Action的区别
当按住Ctorl这样连线时会出现,当选择Selection Segue下面的push时,点击cell的任何位置都会跳转到下一个tableView,当选择Accessory Action的下面的push ...
- openstack搭建配置
安装和配置网络节点vim /etc/sysctl.confnet.ipv4.ip_forward=1net.ipv4.conf.all.rp_filter=0net.ipv4.conf.default ...
- 《30天自制操作系统》12_day_学习笔记
harib09a: 定时器:(Timer)每隔一段时间,会向CPU发送一个中断.这样CPU不用记住每一条指令的执行时间.没有定时器很多指令CPU都很难执行.例如HLT指令,这个指令的执行时间不是个固定 ...
- 2Sigma OA prepare: Longest Chain
DP use HashMap: 根据string的长度sort,然后维护每个string的longest chain,default为1,如果删除某个char生成的string能提供更长的chain, ...
- Ubuntu 16.04 802.1x 有线连接
Ubuntu下使用MentoHUST搞定 锐捷校园网认证网络 http://www.linuxidc.com/Linux/2013-10/91157.htm