内置函数和匿名函数
https://www.processon.com/view/link/5adc6062e4b04721d63171eb?pw=3218 密码:3218
1. 内置函数
1.1 作用域相关
print(locals()) # 返回本地作用域中的所有名字 print(globals()) #返回全局作用域中的所有名字 global 申明变量 *** nonlocal 申明变量 ***
1.2 迭代器生成器相关
next (迭代器) # 迭代器__next__() <===> next(迭代器) 方法 __next__ 实际完成者 内置函数 next() iter(可迭代的) # 迭代器 = 可迭代的.__iter__ # 迭代器 = iter(可迭代的) range range(10) range(1,11) range(1,11,2) range 是可迭代的 但不是迭代器 没有 __next__ 方法 iter(range) 是一个迭代器了。。。
1.3 其他
1.3.1 dir callable help
dir 查看一个变量所拥有的所有方法 只能查变量,不能查关键字 def gloabl之类的 print(dir([])) print(dir(1)) callable #调用相关 返回true或者false 判断一个名字是否能够被调用 print(callable(print)) # True a = 1 print(callable(a)) # False def func():pass print(callable(func)) #True help 帮助相关 help(str) #查看str的所有方法及用法 比dir 更详细的方法 dir(str) #只能查看拥有的方法名字 不能看到方法的用法
1.3.2 模块相关
import # 某个方法属于某个数据类型的变量,就用.调用 # 如果某个方法不依赖于任何数据类型,就直接调用 --- 内置函数和自定义函数 l = [1,2,3,4] # l像是句柄一样啊。。。 l.append() import time # time = __time__('time') print(time.time())
文件相关
open() f = open('filename') print(f.writable()) # 判断文件是否可写 print(f.readable()) # 判断文件是否可读
1.3.3 内存相关
id #查看一个变量的内存地址 hash # print(hash(对象)) # 对象不能变的 都有值输出,代表可hash。 在一次执行中,一个值的hash值不会变。 # 对象可变的,会报错 unhashable 对于相同可hash数据的hash值,在一次程序执行过程中总是不变的 理解记忆字典的寻址方式
1.3.4 输入输出
input # 用户输入 ret = input('提示: ') print(ret) print # 输出方法 print #自带一个换行符 \n print('我们的祖国是花园\n',end = '') #默认参数 end 是空格 print(1,2,3,4,5) print(1,2,3,4,5,sep = '|') # sep 指定输出的分隔符 print输出其实是写到一个文件 这个文件展示到屏幕上。我们可以改变这个默认文件。 f = open('file','w') print('123',file = 'file') f.closed pirnt的其他参数 def print(self, *args, sep=' ', end='\n', file=None): # known special case of print ''' file: 默认是输出到屏幕,如设置为文件句柄,则输出到文件 sep: 打印多个值之间的分隔符,默认为空格 end: 每一次打印的结尾,默认为换行符\n flush: 立即把内容输出到流文件,不做缓存 '''
1.3.5 字符串类型代码的执行
evel exec exec('print(123)') # 123 eval('print(123)') # 123 print(eval('1+2+3+4')) # 10 print(exec('1+2+3+4')) # none # exec 和eval 都可以执行字符串类型的代码 # eval 有返回值 - 有结果的简单计算 # exec 没有返回值- 简单的流程控制 evel 只能用在你明确知道你要执行的代码是什么 code = ''' for i in range(10): print(i * '*') ''' eval(code) compile # 不常用 # 将字符串类型的代码进行编译,使其可以通过eval和exec执行。 # 将代码转换为字节码
1.4 基础数据类型相关
1.4.1 和数字相关
数据类型:
int float complex
进制转换
bin
十转二 (0b)
oct
十转八 (0o)
hex
十转十六(0x)
数学运算
abs #求绝对值 divmod #接收两个参数 返回两个结果、取商取余 print(divmod(7,2)) # 3,1 print(divmod(2,7)) # 1,4 round #小数精确 round(3,1415926,2) # 3.14 pow #幂运算 print(row(2,3)) # 8 幂运算 print(row(2,3,3)) # 幂运算之后取余 sum # 求和 接收一个可迭代的,数字 min # 计算最小值 print(min([1,2,3,4])) # 1 print(min(1,2,3,-4)) # -4 print(min(1,2,3,-4,key = abs)) # 1 找绝对值的最小值 max # 计算最大值,与最小值用法相同
1.5 数据结构相关
1.5.1 序列--列表和元组相关的
list
tuple
1.5.2 序列--字符串相关的
str format bytes bytearry ret = bytearray('alex',encoding='utf-8') print(id(ret)) print(ret[0]) ret[0] = 65 print(ret) print(id(ret)) memoryview ret = memoryview(bytes('你好',encoding='utf-8')) print(len(ret)) print(bytes(ret[:3]).decode('utf-8')) print(bytes(ret[3:]).decode('utf-8')) ord chr ascii repr
1.5.3 序列
reversed
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
2. 匿名函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数
def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n:n**n print(calc(10))
图解:
匿名函数格式说明
函数名 = lambda 参数 :返回值 #参数可以有多个,用逗号隔开 #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值 #返回值和正常的函数一样可以是任意数据类型
我们可以看出,匿名函数并不是真的不能有名字。
匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了