内置函数

接下来,我们就一起来看看python里的内置函数。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了,必须等我们学了新知识才能解开封印的。那今天我们就一起来认识一下python的内置函数。这么多函数,我们该从何学起呢?

    Built-in Functions    
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()  
delattr() hash() memoryview() set()  

上面就是内置函数的表,68个函数都在这儿了。这个表的顺序是按照首字母的排列顺序来的,你会发现都混乱的堆在一起。比如,oct和bin和hex都是做进制换算的,但是却被写在了三个地方。。。这样非常不利于大家归纳和学习。那我把这些函数分成了6大类。你看下面这张图,你猜咱们今天会学哪几大类呀?

我猜你们都猜对了。我们今天就要学习用粉红色标注出来的这四大块——56个方法。还有12个方法欠着怎么办呢?我们讲完面向对象这剩下的12个会在两周之内陆续还给你们的,我保证(认真脸)。那这样,我们今天就主要关注我们要学习的这56个方法。

那要学的一共4块,咱们从哪儿开始学起呢?

作用域相关

基于字典的形式获取局部变量和全局变量

globals()——获取全局变量的字典

locals()——获取执行本方法所在命名空间内的局部变量的字典

  print(globals())#打印全局变量,

  print(locals())#打印局部变量

其他

字符串类型代码的执行

http://www.cnblogs.com/Eva-J/articles/7266087.html

输入输出相关:

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: 立即把内容输出到流文件,不作缓存
"""
sep=' '  在值之间插入字符串,默认空格
#打印进度条
import time
for i in range(0,101,2): mun=i//2 #要打印的星号的数量 # \r 默认表示将输出的内容返回到第一个指针,这样的话,后面的内容会覆盖前面的内容
to_print ='\r%s%%:%s\n'%(i,'*'*mun) if i==100 else '\r%s%%:%s'%(i,'*'*mun)#这里当i=100时 \n 才换行
         # \r 默认表示将输出的内容返回到第一个指针,这样的话,后面的内容会覆盖前面的内容
print(to_print,sep='--',end='',flush=True)# 这里end 要设置成“”否则打印一行,会换行一次
time.sleep(0.2)
# print(1,2,3,4,5,sep='*')  #sep是指定多个要打印的内容之间的分隔符
li=[1,2,3,5]
print(li,sep='//')
print(1,2,3,4,sep='*')
print('aa','bb',sep='122')
#打印的结果
# [1, 2, 3, 5]
# 1*2*3*4
# aa122bb

数据类型相关:

type(o) 返回变量o的数据类型

内存相关:

id(o) o是参数,返回一个变量的内存地址

hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错

调用相关:

callable()#判断是否可调用的

a='s'
def func():
print(a)
print(callable(a))#不可调用 False
print(callable(print))#可以调用 True
print(callable(func))#可以调用 True

#ctrl + 左键单击 :pycharm
#help:包含所有方法名以及他的使用方法 —— 不知道用法
#dir:只包含方法名 —— 想查看某方法是否在这个数据类型中

# f = open('文件名','w',encoding='utf-8')
#打开模式:r、w、a、rb、wb,ab     文件的操作最好不要用  带+ 号的操作方法,  就是不要同时读写,这样会容易造成光标混乱
#编码 utf-8/GBK

哈希
# print(id(1))
# print(id(2))
# print(hash('sajghfj;eyrwodnvjnz,.jifupwk')) #算法
# print(hash(125342))
# print(hash((1,2,3,4))) #数据的存储和查找
#模块:hashlib
# {'k':'v'}
# [1,2,3,4,5,6,] # hash([1,2,3,4,5,6,])
#hash 判断一个数据类型是否可以hash
#在一个程序执行的过程中,对同一个值hash的结果总是不变
#多次执行,对同一个值的hash结果可能改变
#简单求值表达式用eval
# code2 = '1 + 2 + 3 + 4'
# compile2 = compile(code2,'','eval')
# print(eval(compile2)) # code3 = 'name = input("please input your name:")'
# compile3 = compile(code3,'','single')
# # name #执行前name变量不存在
# exec(compile3)
# print(name) #exec
#eval
#compile

 

查看参数所属类型的所有内置方法

dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量  与之类似的还用一个  vars()  它查看的是全局空间的内的属性  以键值对的形式反映

和数字相关

数字——数据类型相关:bool,int,float,complex

数字——进制转换相关:bin,oct,hex

数字——数学运算:abs,divmod,min,max,sum,round,pow

数据函数:

divmod()函数: 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
print(divmod(3,2))
结果:

(1, 1)
min()函数:

min(iterable, *[, key, default])

min(arg1, arg2, *args[, key])

函数功能为取传入的多个参数中的最小值,或者传入的可迭代对象元素中的最小值。默认数值型参数,取值小者;字符型参数,取字母表排序靠前者。还可以传入命名参数key,其为一个函数,用来指定取最小值的方法。default命名参数用来指定最小值不存在时返回的默认值。功能与max函数相反。

print(min(26,7,8,9))
结果

同类型之间可以进行比较

print(min([1,2],[1,3]))
[1, 2]
key参数的另外一个作用是,不同类型对象本来不能比较取最小值的,传入适当的key函数,变得可以比较能取最小值了。

print(min(1,2,'3',key = int))
结果:1

max() 函数与 min()函数类似    都可以让 key= lambda   调用匿名函数

和数据结构相关

序列——列表和元组相关的:list和tuple

序列——字符串相关的:str,format,bytes,bytearry,memoryview,ord  将字母转换成ASCII码,chr  将ASCII码转成字母,ascii,repr

序列:reversed()  (反转,也是返回一个迭代器),slice

l=[12,44,3,4,-55,-66,7,8,9]
print(list(reversed(l)))
#打印结果是 [9, 8, 7, -66, -55, 4, 3, 44, 12]
l=[12,44,3,4,-55,-66,7,8,9]
seer=slice(1,5,2)
# 代表的是 开始索引,结束索引,步长
print(l[seer])
# 打印出的值是[44, 4]

数据集合——字典和集合:dict,set,frozenset

数据集合:len,sorted,enumerate,all,any,zip,filter,map

filter和map:http://www.cnblogs.com/wangkun122/p/8278854.html

sorted方法:http://www.cnblogs.com/Eva-J/articles/7265992.html

方法1.用List的成员函数sort进行排序,在本地进行排序,不返回新的列表
方法2.用built-in函数sorted进行排序(从2.4开始),返回新的列表,原始输入不变

sorted(iterable, key=None, reverse=False)

参数说明:
iterable:是可迭代类型;
key:传入一个函数名  可以是一个匿名函数  详见此,函数的参数是可迭代类型中的每一项,根据函数的返回值大小排序;
reverse:排序规则. reverse = True  降序 或者 reverse = False 升序,有默认值。
返回值:有序列表

sort    用法     li. sort()  得到的是新的列表li   从小到大排列    li.sort(reverse=True)#这个是倒叙排列(从大到小)

sorted   ret=sorted(li)   的到的是一个可迭代对象,需要print(list(ret))  强转列表在打印才能取出他的值

reversesed() 反转  与sorted   相同  都是返回一个新的列表

l1 = [1,3,5,-2,-4,-6]
l2 = sorted(l1,key=abs)
print(l1)
print(l2)

字符串类的函数

eval()   是单词Evaluate   将字符串类型的代码执行并返回结果   所以运算类的字符串一般用这个

print(eval('1+2+3+4'))

exec()将自字符串类型的代码执行  无返回结果  所以带print 的字符串一般用这个

print(exec("1+2+3+4"))
exec("print('hello,world')")
code = '''
import os
print(os.path.abspath('.'))
'''
code = '''
print(123)
a = 20
print(a)
'''
a = 10
exec(code,{'print':print},)
print(a)

compile  将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。

参数说明:

compile(source, filename, mode[, flags[, dont_inherit]])   

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 "<pyshell#29>", line 1, in <module>
name
NameError: name 'name' is not defined
>>> exec(compile3) #执行时显示交互命令,提示输入
please input your name:'pythoner'
>>> name #执行后name变量有值
"'pythoner'"

zip()拉链函数:

函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个的元组,然后返回由这些元组组成的迭代器。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组迭代器。

l1=[1,2,3]
l2=[4,5,8,3]
print(list(zip(l1,l2)))
print(*(zip(l1,l2)))
结果: [(1, 4), (2, 5), (3, 8)]
(1, 4), (2, 5), (3, 8)

匿名函数

http://www.cnblogs.com/wangkun122/p/8278643.html

本章小结

说学习内置函数,不如说整理自己的知识体系。其实整理这些内置函数的过程也是在整理自己的知识体系。

我们讲课的时候会归类:常用或者不常用,主要还是根据场景而言。

一个优秀的程序员就应该是在该用这个方法的时候信手拈来,把每一个内置的函数都用的恰到好处。

要想做到这一点,至少要先了解,才能在需要的时候想起,进而将它用在该用的地方。

但是在这里,我还是以自己的一点经验之谈,把几个平时工作中相对更常用的方法推荐一下,请务必重点掌握:

其他: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

python 常见的内置函数的更多相关文章

  1. python补充最常见的内置函数

    最常见的内置函数是: print("Hello World!") 数学运算 abs(-5)                         # 取绝对值,也就是5 round(2. ...

  2. python中常见的内置函数

    map #自定义map函数 def map_test(func, list): res = [] for item in list: res.append(func(item)) return res ...

  3. python学习交流 - 内置函数使用方法和应用举例

    内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...

  4. python常用的内置函数哈哈

    python常用的内置函数集合做一个归类用的时候可以查找 abs 返回数字x的绝对值或者x的摸 all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为true,就 ...

  5. python常用的内置函数

    python常用的内置函数集合做一个归类用的时候可以查找- abs 返回数字x的绝对值或者x的摸 - all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为tru ...

  6. 十六. Python基础(16)--内置函数-2

    十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...

  7. 十五. Python基础(15)--内置函数-1

    十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...

  8. Python的常用内置函数介绍

    Python的常用内置函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.取绝对值(abs) #!/usr/bin/env python #_*_coding:utf-8_ ...

  9. python之路——内置函数和匿名函数

    阅读目录 楔子 内置函数 匿名函数 本章小结 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们 ...

随机推荐

  1. Java基础-String和StringBuilder类型(11)

    String类概述 字符串是由多个字符组成的一串数据字符串可以看成是字符数组 构造方法 public String(String original)public String(char[] value ...

  2. 高精度减法用string 和 stack

    #include "bits/stdc++.h" using namespace std; int main() { string a,b; while(cin >> ...

  3. Intel DAAL AI加速 ——传统决策树和随机森林

    # file: dt_cls_dense_batch.py #===================================================================== ...

  4. Awk 从入门到放弃 (6) Awk模式(Pattern)之二

    第一题:从/etc/passwd 匹配以 vmuser开头的用户 grep “^vmuser”   /etc/passwd  -r  -n awk  ‘/^vmuser /{print $0}’  / ...

  5. MinGW的gdb调试

        MinGW(Minimalist GNU for Windows)提供了一套简单方便的Windows下的基于GCC程序开发环境.MinGW收集了一系列免费的Windows是用的头文件和库文件: ...

  6. 反向-代理 nginx for Mac 的配置以及使用

       反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端 ...

  7. 模拟QQ分组(具有伸缩功能) (添加开源框架的光闪烁效果)SimpleExpandableListAdapter 适配器的用法,并且可添加组及其组内数据。

    package com.lixu.qqfenzu; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis ...

  8. celery(一)分布式任务调度模块简介及运行环境

    Celery是Python开发的分布式任务调度模块. Celery本身不含消息服务,它使用第三方消息服务来传递任务. django下有个分支Django-Celery,可以结合django来实现任务的 ...

  9. 内核事件KEVENT(同步)

    转载请您注明出处:http://www.cnblogs.com/lsh123/p/7358702.html 一.驱动程序与驱动程序的事件交互    IoCreateNotificationEvent ...

  10. iOS ipv6 被拒

    1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧. 2.确保你用的sdk支持ipv6,这个自己去看文档就行. 3.终端  dig +nocmd + nos ...