内置函数,匿名函数

常用的内置函数:

1.作用域相关:locals()  globals()  *****

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

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

1.1其他:eval()  exec()  compile()  了解,慎用

  eval()  将字符串类型的代码执行并有返回值

  exec()   将字符串类型代码执行无返回值

  compile()  将字符串类型的代码编译。代码对象能通过exec语句来执行或者eval()进行求值   

print(eval("1+2"))  #3
print(exec("1+2"))  #None
print(exec("print('1+2')")) #1+2   None

2.输入输出相关:input()  print()*****  

input()  输入

s = input("请输入内容")  #输入的内容赋值给s
print(s)        #输入什么打印什么,类型为str

print()  输出  看源码

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源码剖析
f = open("tmp_file","w")
print(123,234,345,sep=",",file=f)  将123,234,345,以逗号隔开,写入文件tmp_file文件中

3.数据类型相关:type()  返回变量的数据类型  *****

4.内存相关: id()  hash()  ***

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

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

文件操作相关: open()  *****

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

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

模块操作相关  

__import__导入一个模块

import time

和调用相关  callable(o)  o是参数,看这个变量是不是可调用  dir()

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

def func():pass
print(callable(func))   #True  #参数为函数名
print(callable(123))    #False #数字不能调用

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

和数字相关:

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

进制转换相关:bin(十转二)oct(十转八),hex(十转十六)

数学运算:abs(绝对值),divmod(返回(除,余)),min(最小),max(最大),sum(求和),round(小数精确),pow(幂运算)

abs()返回数字的绝对值

round()  保留浮点数的小数位数,默认保留整数

divmod(除数,被除数):计算除数与被除数的结果,返回一个包含商和余数的元组

pow() 求某个数的几次方

print(abs(-5) )      #5
print(divmod(12,5))     #(2,2)  商为2,余数为2
print(round(7*3.235,2))   #22.64  #(保留俩位小数
print(pow(3,2))     #9  #3的2次方

sum(可迭代对象,初始值(默认=0))  求和,

min(可迭代 对象,key)返回可迭代对象的最小值

max(可迭代对象,key)返回可迭代对象的最大值,可以通过自定义函数规则来进行

相关内置函数  reversed() 翻转     并返回翻转序列的迭代器

  slice()  构造一个切片模板,用于对许多列表进行相同的切片

li = ['a','b','c','d','e','f','g']
sli_obj = slice(3)
print(li[sli_obj])

字符串相关

  str  将数据类型转换成字符串类型

  format 与具体数据相关,用于计算各种小数

  bytes  用于不同编码之间的转化,只能单向转化

  repr  返回一个对象的string的形式(原形毕露)

b = "123"
print(b)        #123
print(repr(b))  #'123'

数据集合  dict  set   

frozenset(返回一个冻结集合,冻结后的集合不能添加任何元素)

相关内置函数:

  len()  返回一个对象中元素的个数

  sorted: 对所有可迭代的对象进行排序操作

l1 = [("c",20),("b",50),("a",10)]
l2 = sorted(l1,key=lambda x:x[1])
print(l2)   #[('a', 10), ('c', 20), ('b', 50)]

  enumerate:枚举,返回一个枚举对象

  all:可迭代对象中,全是True才返回True  (用于判断可迭代对象中是否有空的字符,列表)

  any:可迭代对象中,有一个True就返回True

zip:函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

l1 = [1,2,3,5,6,7]
tu1 = ('alex','太白', 'wusir', '女神')
dic = {'name': '日天', 'age':28, 'hobby': 'tea', 'weight':100}
l2 = zip(l1,tu1,dic)
for i in l2:
    print(i)
#(1, 'alex', 'name')    (2, '太白', 'age') (3, 'wusir', 'hobby')  (5, '女神', 'weight')

filter(函数,可迭代对象) 过滤,迭代器  与函数生成器的筛选模式相同

l1 = list((i for i in range(10) if i%2==0))
print(l1)   #[0, 2, 4, 6, 8]
def func1(x):
    return x % 2 == 0
print(list(filter(func1,l1)))   #转换成列表的形式[0, 2, 4, 6, 8]
#filter     生成的是迭代器

map(函数,可迭代对象)会根据提供的函数对可迭代对象进行映射  迭代器  循环模式  与函数生成器的循环模式相同

l1 = [1,2,3,4]
print(list((i**2 for i in l1)) ) # [1, 4, 9, 16]
def func(x): return x**2
print(list(map(func,l1)))   #[1, 4, 9, 16]

 

匿名函数 :lambda表达式

  对于简单的函数进行缩写,有且只有返回值得函数才可以进用匿名函数进行简化,又称一行函数

 

 

posted @ 2018-08-22 18:57  云丛  阅读(170)  评论(0编辑  收藏  举报