python—内置函数和匿名函数

内置函数

迭代器\生成器(3个):

1.range():步长,范围

range(100)  #[0,99]  [0,100)
range(10,100) #[10,99]
range(10,100,2) #[10,99]隔一个取一个
#可迭代对象  最好循环取结果

2. iter():可迭代对象变成迭代器

3.’next:激活迭代器,取下一个值

在python里,要尽量少去调用双下方法

def iter(iterable):
return iterable.__iter__() print([1,2,3].__iter__())

 
iterator = iter({1,2,3,4})
def next(iterator): return iterator.__next__() print(next(iterator))

作用域(2个):

1.globals():全局作用域中的变量

2.locals():局部作用域中的变量

PS:在全局执行这两个方法,结果相同,在局部执行,locals表示函数内的名字,globals始终不变

def func():
    x = 1
    y = 2
    print(locals())
    print(globals())
func()

 其他:

字符串代码(3个):

1.eval(有返回值)

2.exec(没有返回值)

3.complie:当需要对某一个字符串数据类型的python代码多次执行的时候,就是用compile先编译一下

code1 = 'for i in range(0,10): print (i)'
compile1 = compile(code1,'','exec')   #编译
print(compile1)   #code

结果:
<code object <module> at 0x0000000002685150, file "", line 1>
code2 = '1 + 2 + 3 + 4'
# compile2 = compile(code2,'','eval')
# print(eval(compile2))

结果:10
name = 'egon'
# code3 = 'name = input("please input your name:")'
# compile3 = compile(code3,'','single')
# exec(compile3)
# print(name)

结果:please input your name:

 直接拿来执行的方式一定不要随便,如果非用不可,你也要做最起码的检测


输入和输出(2个):

1.输入input(">>>>")

2.输出print()

a = input('>>>')
# print(11232)
# print(11232,1234,sep='***')
# print('ajkdshkljaf',end=' ')
# print('sagjkg')
# print(12,34,56,sep=',')
# print('%d,%d,%d'%(12,34,56))
结果:
11232
11232***1234
ajkdshkljaf sagjkg
12,34,56
12,34,56

 文件相关:

open打开一个文件,返回一个文件句柄

f = open('print_test','a',encoding='utf-8')
# print(12146798,file=f)

 模块导入:

import   后面加模块

import time
# for i in range(0,101,2):
#      time.sleep(0.1)
#      char_num = i//2      #打印多少个'*'
#      per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
#      print(per_str,end='', flush=True)

 内存相关:

hash的结果是一个数字(可变的不能用,列表,字典,集合)

在python的一次执行中,对于相同的可hash对象来说,得到的是相同的数字

print(hash('dsaklfksgd'))
print(hash((1,2,3,4,5,6)))
结果:
4820752878243118402
-14564427693791970

 id('assdsd')身份运算 is  is not   不仅比较值的大小还比较内存地址是否一致

帮助:

1.help:进入help模式help()输入q是退出,括号里可以指定查询的对象的帮助信息

调用相关:

2.callable():判断一个对象是否可以调用

查看内置属性:

dir():print(dir())括号内是用来查找内置属性的对象

print(dir(_builtins_)) 所有内置函数

基础数据:

数据类型:

1.bool() 布尔值  2.int()  整型  3.float()  浮点  4.complex()  复数

进制转换(只有在强转中会用):

1.bin():二进制转换

2.oct(): 八进制转换

3.hex():十六进制转换

数学运算:

1.abs():计算绝对值

2.divmod():返回(商,余)

ret = divmod(101,10)
# print(ret)   #(商,余)

 3.round():精确到小数点几位

print(round(2.32342342,3))

 4.pow():幂运算

print(pow(2,3))  #幂运算
# print(pow(2,3,5))  #最后一位取余

 5.sum():求和,(前面放迭代器,可以从什么数开始)

print(sum([1,2,3,4,5],'本钱'))

 6.max():计算最大值

print(max([1,2,3,-4],key=abs))# key里面放了什么函数条件就可以判断以什么条件最小

 7.min():计算最小值

print(min([1,2,3,-4],key=abs))

 min和max可以接受散列的值,和可迭代的对象

8.default():如果可迭代对象为空,设置默认的最小值

数据结构:

序列(列表(list),元祖(tuple)):

1.reversed():反转,参数是序列,返回的是反序迭代器

2.slice():切片

字符串:

1.str():强转

2.format():用来设定格式的函数,指定返回值的格式,前面是数据,后面是在什么位置

3.bytes():转二进制

4.bytearray():

5.memoryview():只接受字节

6.ord():字符转换成数字(unicode)

7.chr():数字转换字符

8.ASCII():字符转换成编码

9.repr():可以将字符串按照字符串格式打印出来

数据集合:

1.字典:dict()

2.集合:(1)set():  2.frozenset():不可变集合

内置函数:

1.len():计算长度

2.enumerate():加序号

se = {'computer':10000,'umbrella':200}
# for k in se:
#     print(k,se[k])
for num,goods in enumerate(se,1):
    print(num,goods,se[goods])

3.all():判断是否有布尔值,是False ,后面直接加可迭代对象

4.and():判断是否有布尔值,是True,后面直接加可迭代对象

5.zip():拉链,将两个列表值配对,可以多个列表一起拉

6.filter():过滤器

def func(n):
#     if n%2 == 0:
#         return True
# lst = [1,2,3,4,5,6,7]
# ret = filter(func,lst)  
# for i in ret:
#     print(i)

 7.map():遍历

lst = [1,2,3,4,5,6,7]
# def func(item):
#     return item*item
# print(list(map(func,lst)))

 8.sorted():排序

 

匿名函数——lambda表达式:

—— 一句话的python

—— 三元运算

—— 各种推导式,生成器表达式

—— lambda表达式

calc2 = lambda n,m : n**m
# my_max = lambda n,m : n if n>m else m
# print(calc2(10,2))
# print(my_max(10,2))

可以传多个参数,也可以传了不用

匿名函数不管逻辑多么复杂,只能写一行,逻辑执行结束后的内容就是返回值

def multipliers():
    return [lambda x:x*i for i in range(4)]
print([m(2) for m in multipliers()])
结果[6,6,6,6]
def multipliers():
    return (lambda x:x*i for i in range(4))
print([m(2) for m in multipliers()])
结果[0,2,4,6]
posted @ 2017-09-10 13:22  奋斗中的网络家园  阅读(46)  评论(0编辑  收藏  举报