内置函数

接下来,我们就一起来看看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()  

作用域相关

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

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

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

其他

输入输出相关:

input() 输入

  1. s = input("请输入内容 : ") #输入的内容赋值给s变量
  2. print(s) #输入什么打印什么。数据类型是str
  1. s = input("请输入内容 : ") #输入的内容赋值给s变量
  2. print(s) #输入什么打印什么。数据类型是str

print() 输出

  1. def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
  2. """
  3. print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
  4. file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
  5. sep: 打印多个值之间的分隔符,默认为空格
  6. end: 每一次打印的结尾,默认为换行符
  7. flush: 立即把内容输出到流文件,不作缓存
  8. """
  1. def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
  2. """
  3. print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
  4. file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
  5. sep: 打印多个值之间的分隔符,默认为空格
  6. end: 每一次打印的结尾,默认为换行符
  7. flush: 立即把内容输出到流文件,不作缓存
  8. """
  1. f = open('tmp_file','w')
  2. print(123,456,sep=',',file = f,flush=True)
  1. f = open('tmp_file','w')
  2. print(123,456,sep=',',file = f,flush=True)
  1. import time
  2. import sys
  3. for i in range(0,101,2):
  4. time.sleep(0.1)
  5. char_num = i//2 #打印多少个#
  6. per_str = '%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
  7. print(per_str,end='', file=sys.stdout, flush=True)
  1. import time
  2. import sys
  3. for i in range(0,101,2):
  4. time.sleep(0.1)
  5. char_num = i//2 #打印多少个#
  6. per_str = '%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
  7. print(per_str,end='', file=sys.stdout, flush=True)

数据类型相关:

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

内存相关:

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

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

  1. t = (1,2,3)
  2. l = [1,2,3]
  3. print(hash(t)) #可hash
  4. print(hash(l)) #会报错
  5.  
  6. '''
  7. 结果:
  8. TypeError: unhashable type: 'list'
  9. '''
  1. t = (1,2,3)
  2. l = [1,2,3]
  3. print(hash(t)) #可hash
  4. print(hash(l)) #会报错
  5.  
  6. '''
  7. 结果:
  8. TypeError: unhashable type: 'list'
  9. '''

hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。

*每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。

文件操作相关

open()  打开一个文件,返回一个文件操作符(文件句柄)

操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)

可以用encoding指定编码.

模块操作相关

__import__导入一个模块

  import time

  1. import time

帮助方法

在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出

或者直接执行help(o),o是参数,查看和变量o有关的操作。。。

和调用相关

callable(o),o是参数,看这个变量是不是可调用。

如果o是一个函数名,就会返回True

  1. def func():pass
  2. print(callable(func)) #参数是函数名,可调用,返回True
  3. print(callable(123)) #参数是数字,不可调用,返回False

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

dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量

  1. print(dir(list)) #查看列表的内置方法
  2. print(dir(int)) #查看整数的内置方法
  1. print(dir(list)) #查看列表的内置方法
  2. print(dir(int)) #查看整数的内置方法

str类型代码的执行

http://www.cnblogs.com/huchong/p/8296429.html

和数字相关

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

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

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

和数据结构相关

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

序列——字符串相关的:str,format,bytes,bytesarry,memoryview,ord,chr,ascii,repr

序列:reversed,slice

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

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

filter和map:http://www.cnblogs.com/huchong/p/8296453.html

sorted方法:http://www.cnblogs.com/huchong/p/8296025.html

reduce方法:http://www.cnblogs.com/huchong/p/8214250.html

匿名函数(lambda)

匿名函数:为了解决那些功能很简单的需求而设计的一句话函数

  1. #这段代码
  2. def calc(n):
  3. return n**n
  4. print(calc(10))
  5.  
  6. #换成匿名函数
  7. calc = lambda n:n**n
  8. print(calc(10))

上面是我们对calc这个匿名函数的分析,下面给出了一个关于匿名函数格式的说明

  1. 函数名 = lambda 参数 :返回值
  2.  
  3. #参数可以有多个,用逗号隔开
  4. #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
  5. #返回值和正常的函数一样可以是任意数据类型

我们可以看出,匿名函数并不是真的不能有名字。

匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了~~~

练一练:

  1. 请把以下函数变成匿名函数
  2. def add(x,y):
  3. return x+y

上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候

  1. l=[3,2,100,999,213,1111,31121,333]
  2. print(max(l))
  3.  
  4. dic={'k1':10,'k2':100,'k3':30}
  5.  
  6. print(max(dic))
  7. print(dic[max(dic,key=lambda k:dic[k])])
  1. res = map(lambda x:x**2,[1,5,7,4,8])
  2. for i in res:
  3. print(i)
  4.  
  5. 输出
  6. 1
  7. 25
  8. 49
  9. 16
  10. 64
  1. res = filter(lambda x:x>10,[5,8,11,9,15])
  2. for i in res:
  3. print(i)
  4.  
  5. 输出
  6. 11
  7. 15

面试题练一练

现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

  1. #答案一
  2. test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
  3. print(test(t1,t2))
  4. #答案二
  5. print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
  6. #还可以这样写
  7. print([{i:j} for i,j in zip(t1,t2)])
  1. #答案一
  2. test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
  3. print(test(t1,t2))
  4. #答案二
  5. print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
  6. #还可以这样写
  7. print([{i:j} for i,j in zip(t1,t2)])

本章小结

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

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

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

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

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

参考文档:

  https://docs.python.org/3/library/functions.html#object

python——内置函数和匿名函数的更多相关文章

  1. Python内置的字符串处理函数整理

    Python内置的字符串处理函数整理 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-29我要评论 Python内置的字符串处理函数整理,收集常用的Python 内置的各种字符串处理 ...

  2. python内置常用高阶函数(列出了5个常用的)

    原文使用的是python2,现修改为python3,全部都实际输出过,可以运行. 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://bl ...

  3. Python 内置的一些高效率函数用法

    1.  filter(function,sequence) 将sequence中的每个元素,依次传进function函数(可以自定义,返回的结果是True或者False)筛选,返回符合条件的元素,重组 ...

  4. 学习Pytbon第十天 函数2 内置方法和匿名函数

    print( all([1,-5,3]) )#如果可迭代对象里所有元素都为真则返回真.0不为真print( any([1,2]) )#如果数据里面任意一个数据为真返回则为真a= ascii([1,2, ...

  5. Python内置进制转换函数(实现16进制和ASCII转换)

    在进行wireshark抓包时你会发现底端窗口报文内容左边是十六进制数字,右边是每两个十六进制转换的ASCII字符,这里使用Python代码实现一个十六进制和ASCII的转换方法. hex() 转换一 ...

  6. Python内置的字符串处理函数

    生成字符串变量 str='python String function'   字符串长度获取:len(str) 例:print '%s length=%d' % (str,len(str)) 连接字符 ...

  7. Py修行路 python基础 (十三)匿名函数 与 内置函数

    一.匿名函数  1.定义: 匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序. 2.语法格式:lambda 参数:表达式 lambda语句中,开头先写关键字lambda,冒号前是 ...

  8. Python内置函数系列

    Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义. 作用域相关(2) locals()  :以字典类型返回当前位置 ...

  9. Python内置高阶函数map()

    map()函数map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如,对于lis ...

  10. Python中的高阶函数与匿名函数

    Python中的高阶函数与匿名函数 高阶函数 高阶函数就是把函数当做参数传递的一种函数.其与C#中的委托有点相似,个人认为. def add(x,y,f): return f( x)+ f( y) p ...

随机推荐

  1. 不借助第三方网站四步实现手机网站转安卓APP

    今天本来是帮朋友查看是否在APP里可以点外链的一个测试,做着做来感觉了,就把这个测试优化了一下.好了我们来进入正题. 工具:Android Studio 第一步:新建项目 第二步:拖入控件(WebVi ...

  2. 搭建nexus私服(maven)

    这里提供nexus的直接下载页面的链接: https://www.sonatype.com/download-oss-sonatype maven获取依赖jar包是从中央仓库获取,但很莫名的出现jar ...

  3. vue.js+UEditor集成 [前后端分离项目]

    首先,谈下这篇文章中的前后端所涉及到的技术框架内容. 虽然是后端的管理项目,但整体项目,是采用前后端分离的方式完成,这样做的目的也是产品化的需求: 前端,vue+vuex+vue router+web ...

  4. PhpStorm配置PHP解释器(wampServer版)

    PHPStorm(以下简称为PS)和wampServer集成环境安装简单,不再赘述. 本人使用PhpStrom版本为2017.1.4版本. PS刚开始使用会使用自带服务器,但是有几率不能自动匹配到PH ...

  5. java IO之 字符流 (字符流 = 字节流 + 编码表) 装饰器模式

    字符流 计算机并不区分二进制文件与文本文件.所有的文件都是以二进制形式来存储的,因此, 从本质上说,所有的文件都是二进制文件.所以字符流是建立在字节流之上的,它能够提供字符 层次的编码和解码.列如,在 ...

  6. ubuntu输入某个目录测试该目录里.C文件里代码行数shell脚本

    #!/bin/bash echo "★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★" echo "★☆       统计代码行数        ☆★&qu ...

  7. 打印水仙花数(narcissus number)

    题目:打印出所有的"水仙花数(narcissus number)",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个" ...

  8. Struts2入门项目开发小步骤

    Step1: Struts2的获取和添加到项目中: 在官方网站:http://struts.apache.org 获取Struts的其中一个版本. 在开发项目之前,需要添加struts2的类库支持,也 ...

  9. React-native初体验(安卓篇)

    本篇文章主要包括两方面,如何从0开始把RN(react-native)项目整合进入现有Android项目,以及我们做的第一个RN的上线项目遇到的一些坑. 初次做RN项目,我们选择做了一个逻辑相对简单的 ...

  10. Jenkins2 实现持续交付初次演练(MultiJob,Pipeline,Blue Ocean)

    背景 项目需要用到自动部署,但可获取外网的节点机器只有一台,那只能同过主节点机器进行构建完成然后分发至对应服务器进行启动更新. 目前已尝试过三种方式: 1.Pipeline-Trigger param ...