python函数:内置函数和匿名函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python函数:内置函数和匿名函数相关的知识,希望对你有一定的参考价值。
我们学了这么多关于函数的知识基本都是自己定义自己使用,那么我们之前用的一些函数并不是我们自己定义的比如说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()) #打印全局作用域中的名字
2、其他
s = input("请输入内容 : ") #输入的内容赋值给s变量 print(s) #输入什么打印什么。数据类型是str
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: 立即把内容输出到流文件,不作缓存 """
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) #返回变量的数据类型
4、内存相关
id(o) o是参数,返回一个变量的内存地址
hash(o) o是参数,返回一个可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指定了光标的位置 就在从该位置开始覆盖着写
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)
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)))
数据集合——字典和集合: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函数:内置函数和匿名函数的主要内容,如果未能解决你的问题,请参考以下文章