首页 > 代码库 > python函数(6):内置函数和匿名函数

python函数(6):内置函数和匿名函数

我们学了这么多关于函数的知识基本都是自己定义自己使用,那么我们之前用的一些函数并不是我们自己定义的比如说print(),len(),type()等等,它们是哪来的呢?

 

一、内置函数

由python内部定义好我们可以直接调用的函数就叫内部函数。python一共给我们68个内置函数:

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都是做进制换算的,但是却被写在了三个地方。。。这样非常不利于大家归纳和学习。那我把这些函数分成了7大类。有助于大家总结和记忆。

内置函数思维导图:

技术分享

 

思维导图详细地址:https://www.processon.com/view/link/598042afe4b03afe8264824f

密码:91K8

其中在七个分类中有详细分类。中标注红色为必须掌握,黄色为重点掌握,其他的作为了解。

 


 

二、内置函数部分详解

1、作用域相关(locals,globals)

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

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

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

技术分享
def func():
    x = 1
    y = 2
    print(locals())  #打印局部作用域中的名字
    print(globals()) #打印全局作用域中的名字
View Code

2、其他

技术分享
s = input("请输入内容 : ")  #输入的内容赋值给s变量
print(s)  #输入什么打印什么。数据类型是str
input输入
技术分享
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: 立即把内容输出到流文件,不作缓存
    """
print输出源码剖析

 

技术分享
import time
import sys
for i in range(0,101,2):
    time.sleep(0.1)
    char_num = i//2      #打印多少个#
    per_str = %s%% : %s\n % (i, * * char_num) if i == 100 else \r%s%% : %s%(i,**char_num)
    print(per_str,end=‘‘, file=sys.stdout, flush=True)
进度条(了解)

 

3、数据类型相关

技术分享
num = 123
num1 = [1,2,3]
num2 = "hello"
type(num,num1,num2) #返回变量的数据类型
type

4、内存相关

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

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

技术分享hash实例

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

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

5、文件操作相关 

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

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

可以用encoding指定编码

 

技术分享
open()
r,w,a,r+,w+,a+,(都可以+b)
f = open(tmp,r+)
print(f.read(3))
f.seek(5)
f.write(ccccccc)
#不要一边写一边读
f.close()

r+打开文件
如果直接写 从头覆盖
如果读了再写 追加
如果seek指定了光标的位置 就在从该位置开始覆盖着写
open

 

6、模块操作相关

import time #导入time模块

7、帮助方法

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

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

8、和调用相关

技术分享
def func():pass
print(callable(func))  #参数是函数名,可调用,返回True
print(callable(123))   #参数是数字,不可调用,返回False
判断是否调用

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

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

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

10、str类型代码的执行

 

技术分享
print(123)
"print(456)"  #字符串
eval("print(456)")  #字符串->转换成python代码去执行

exec("print(789)")

num = 1+2+3
num = eval("1+2+3")  #执行
print(num)

num2 = exec("4+5+6") #执行,没有返回值
print(num2)
View Code

 

11、和数字相关

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

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

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

 

技术分享
#绝对值
print(abs(-12))

#返回(除,余)
print(divmod(7,4))

#最小值 最大值
print(min(1,2,3,4))
print(max(1,2,3,4))

#求和
print(sum((1,2,3,4)))  #print(sum(1,2,3,4))这个报错因为不是序列
print(sum([1,2,3,4]))
print(sum((1,2,3,4)))

#小数精确
print(round(3.14159,1))
print(round(3.14159,2))
print(round(3.14159,3))

#冥运算
print(pow(2,4))
print(2**4)
数学运算

 

12、和数据结构相关

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

技术分享
#位置
print(format(test, <20))
print(format(test, >40))
print(format(test, ^40))

#字符编码的转换
s = "你好"
sb = bytes(s,encoding=utf-8)
print(sb)
ret = sb.decode(utf-8)
print(ret)

#格式化输出
print(repr(1234))
print(repr(1234))
字符串相关

序列:reversed,slice

技术分享
#倒叙
l = [1,2,3,4]
print(list(reversed(l)))
reversed

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

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

filter和map

sorted方法

未完待续!!!

 


 

三、匿名函数

匿名函数 简单的需要用函数去解决的问题 匿名函数的函数体 只有一行

也叫lambda表达式

 

技术分享
#这段代码
def calc(n):
    return n**n
print(calc(10))
 
#换成匿名函数
calc = lambda n:n**n
print(calc(10))
匿名函数

 

技术分享

技术分享
#函数名 = lambda 参数 :返回值

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

小练习:

 

技术分享
l = [10,11,8,12]
# def func(x):
#     return x>10
# print(list(filter(func,l)))
print(list(filter(lambda x:x>10,l)))

l = [1,2,3,4]
# def pow2(x):
#     return x*x
# map(pow2,l)
print(list(map(lambda x:x*x , l)))

dic={k1:10,k2:100,k3:30}
print(max(dic))
func = lambda k:dic[k]
print(max(dic,key = func))
print(max(dic,key = lambda k:dic[k]))
匿名函数练习

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

python函数(6):内置函数和匿名函数