内置函数和匿名函数

内置函数什么是内置函数在聊内置函数之前,我们先来回顾一下普通函数的基础知识。问:函数怎么调用?答:函数名()现在我们在自己的程序里打印一下自己的名字,该怎么打的呀?print('x

大家好,又见面了,我是你们的朋友全栈君。

 内置函数

什么是内置函数

在聊内置函数之前,我们先来回顾一下普通函数的基础知识。

问:函数怎么调用?

答:函数名()

现在我们在自己的程序里打印一下自己的名字,该怎么打的呀?

print(‘xxxx’)

好了,现在结合刚刚的函数的调用方法,你有没有什么发现?

我们就猜,print有没有可能是一个函数?

但是没有人实现它啊。。。它怎么就能用了呢?

早在我们“初识函数”的时候是不是就是用len()引出的?

那现在我们也知道len()也是一个函数,也没人实现,它好像就自己能用了。。。

之前老师给你讲你可以这样用你就用了,那你有没有想过像这样直接拿来就能用的函数到底有多少?

 

python的内置函数可以直接调用,无需import,例如int,str等。可以在python命令行中使用dir(__builtins__)列出查看,参考下图。

<span role="heading" aria-level="2">内置函数和匿名函数

简单的来说内置函数就是不用导入任何模块直接用的函数

内置函数有什么用

不用程序员自己去定义或者导入特定的函数,在需要实现某些特定的需求的时候直接调用即可,方便快捷,效率更高

内置函数都有哪些

接下来,我们就一起来看看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大类。具体来看下面的图吧!

 

<span role="heading" aria-level="2">内置函数和匿名函数

 这样看起来感觉就舒服多喽。。。。。。。接下来详细的介绍一下吧

作用域相关

<span role="heading" aria-level="2">内置函数和匿名函数

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

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

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

其他

<span role="heading" aria-level="2">内置函数和匿名函数

字符串类型代码的执行

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

 

输入输出相关:

input() 输入

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

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

View Code

print() 输出

 

数据类型相关:

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

 

内存相关:

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

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

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

t = (1,2,3)
l = [1,2,3]
print(hash(t))  #可hash
print(hash(l))  #会报错

'''
结果:
TypeError: unhashable type: 'list'
'''

hash实例

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

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

 

文件操作相关

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

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

可以用encoding指定编码.

 

模块操作相关

__import__导入一个模块

import time
<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

os = __import__('os')
print(os.path.abspath('.'))

__import__

 

帮助方法

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

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

 

和调用相关

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

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

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

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

callable实例

 

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

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

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

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

查看变量/数据包类型的方法

 

和数字相关

<span role="heading" aria-level="2">内置函数和匿名函数

 

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

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

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

 

和数据结构相关

<span role="heading" aria-level="2">内置函数和匿名函数

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

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

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

ret = bytearray('alex',encoding='utf-8')
print(id(ret))
print(ret[0])
ret[0] = 65
print(ret)
print(id(ret))

bytearry

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

ret = memoryview(bytes('你好',encoding='utf-8'))
print(len(ret))
print(bytes(ret[:3]).decode('utf-8'))
print(bytes(ret[3:]).decode('utf-8'))

memoryview

 

序列:reversed,slice

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

l = (1,2,23,213,5612,342,43)
print(l)
print(list(reversed(l)))

reversed

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])

slice

 

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

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

filter和map:http://www.cnblogs.com/Eva-J/articles/7266192.html

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

匿名函数

定义及作用

定义:匿名函数即没有绑定名字的函数,没有绑定名字,意味着只能用一次就会被回收所以说匿名函数的应用场景就是:某个功能只用一次就结束了
作用:通常不希望再次使用(即只使用一次的)的函数可以定义为匿名函数.

匿名函数的结构及详解

<span role="heading" aria-level="2">内置函数和匿名函数

函数名 = lambda 参数 :返回值

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

普通函数转换为匿名函数

def add(x,y):
    return x+y

--》lambda  x,y : x+y

匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候

<span role="heading" aria-level="2">内置函数和匿名函数
示例

面试题练习

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

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

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

View Code

<span role="heading" aria-level="2">内置函数和匿名函数
<span role="heading" aria-level="2">内置函数和匿名函数

1.下面程序的输出结果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print x

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

3.以下代码的输出是什么?请给出答案并解释。
def multipliers():
    return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
请修改multipliers的定义来产生期望的结果。

练习题

章节小结

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/124535.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • XFF漏洞利用[通俗易懂]

    XFF漏洞利用[通俗易懂]作者:小刚一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢本实验仅用于信息防御教学,切勿用于其它用途XFF漏洞X-Forwarded-For(XFF)利用方式1.绕过服务器过滤2.XFF导致sql注入补充X-Forwarded-For(XFF)XFF是header请求头中的一个参数是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。代表了HTTP的请求端真实的IP。X-Forwarded-For:client1,proxy1,p.

  • 机房收费系统——退卡

    机房收费系统——退卡机房收费系统——退卡

  • SPSS学习笔记(五)卡方检验

    SPSS学习笔记(五)卡方检验和“SPSS学习笔记”的其他方法不同,卡方检验​​​​​​​是针对计数资料的目录一、卡方检验、Fisher精确检验(2*2)分析操作结果及分析二、卡方检验(R×C)分析操作结果及分析三、配对卡方检验分析操作结果及分析一、卡方检验、Fisher精确检验(2*2)分析:案例:该医生招募了100名研究对象,按照吸烟状态分为两组,其中吸烟者52人,不吸烟者48人,探讨吸烟与阿尔兹海默症之间的关联性需要先满足4项假设:假设1:存在两个二分类变量,

    2022年10月19日
  • 解决docker下载镜像速度过慢_docker image是什么

    解决docker下载镜像速度过慢_docker image是什么前言上一篇讲到pull镜像,但是pull镜像的时候下拉的速度实在感人,有什么解决办法吗?我们只需将docker镜像源修改为国内的将docker镜像源修改为国内的:在/etc/docker/d

  • 代理模式proxy_网络代理设置

    代理模式proxy_网络代理设置代理模式 Proxy动机模式定义实例结构要点总结笔记动机在面向对象系统中,由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程额外的访问等),直接访问会给使用者,或者系统结构带来很多麻烦.如何在不是去透明操作对象的同时来管理/控制这些对象特有的复杂性?增加一层间接曾是软件开发中常见的解决方式模式定义为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问实例朴素客户端要去使用process 但是process周围需要做很多事情class ISubject{p

  • python fillna函数_python中dropna函数

    python fillna函数_python中dropna函数我正在尝试在datetime64[ns]类型的列上运行fillna.当我运行类似的东西:DF[‘日期’].fillna(日期时间(“2000-01-01”))我明白了:TypeError:需要一个整数有什么方法吗?这应该在0.12和0.13(刚刚发布)中工作.@DSM指出日期时间的构造如下:datetime.datetime(2012,1,1)所以错误是由于未能构建您传递给fillna的值…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号