fan传统的定义函数方式如下
def f1(): return 123
lambda表达式定义函数
f2 = lambda : 123
python3的内置函数
1.abs 绝对值
i = abs(-11) print (i)
输出结果是11
abs = absolute
2,all 循环参数,如果每个元素都为真,则返回为真
r = all([True, True]) print (r)
在python中 0 () [] ''和 None是False(空值都是假的)
r = all(["123"," ", [1,2],""]) print (r)
返回为False
3,any 只要有一个为真 就为True
i = any([None," ","123"]) print (i)
返回为True
4,ascii 自动执行 ascii(对象)去对象的类中,找__reper__,获取返回值
class Foo: def __repr__(self): return "hello" obj = Foo() r = ascii(obj) print (r)
返回值为hello
5,bin()二进制 oct()八进制 int()十进制 hex()十六进制
6,bool判断真假:本质上是把一个对象转换成布尔值
7,bytes(字节)bytesarray(字节列表)
补充字节和字符串之间的转换
bytes("xxxxx",encoding="uft-8")
8,chr() ord()
c = chr(65)
print (c)
返回值是A
chr找到对应ascii码中对应的字符(ascii码是一个字符对应一个字节)
同理 ord(a)
返回97 通过ord把一个字符转换成数字
在验证码中不可以生成一个随机
的字母,但是可以生成一个随机的数随机生成一个随机数,再用chr(xx)生成字母。随机字母就可以生成了。
eg:生成一个ascii码在65-90的字符的字母
要导入一个random的模块:
import random i = random.randrange(65,91) print (i)
这个括号是(大于等于65,小于91)
import random i = random.randrange(65,91) c = chr(i) print (i)
这样就能随机生成一个字母了
如果想生成4个字幕的验证码,循环4此就行了
import random temp = "" for i in range(4) rad = random.randrange(65,91) c = chr(rad) temp = temp + c print (temp)
如果想其中含有字母和数字:
import random for i in range(6) num = random.randrange(0,4) if num == 3 or num ==1: rad2 = random.randrange(0,10) temp = temp + str(rad2) else: rad1 = random.randrange(65,91) c1 = chr(rad1) temp = temp + c1 print (temp)
函数callable()表示是否可执行:
def f1() return 123 f1() r = callable(f1)
就是判断一下f1是否可执行。
compile()
在python中底层实际上考虑所有的文件都是字符串,编译成机器码后才能让计算机执行。compile("xxxx")相当于让编译器去编译这个字符串,再去让机器执行编译后的机器码。
complex()
复数的虚部。
dict() 字典
dir()查看类所提供的功能
li = [] print(dir(li))
若想查找更详细的可以用help
divmod()得到一个元组,(商,余数)
eval()直接转换字符串的值:
print("1+3")
得到的结果还是1+3
但是如果用eval直接可以把字符串“1+3”计算成4
exec() 功能和eval一样,但不用输入print。没有返回值
exec:像python复杂语法程序,用exec来执行
eval:对于处理像字符串一样的表达式用eval来做。
返回值:eval是有返回值的,eval()的结果可以赋值给一个变量。eg:re = eval("1+1")
exec无返回值。执行代码
compile 编译代码
filter():
filter(函数,可迭代对象):函数会迭代里面每一个元素,并且把元素当做参数去执行一下前面的函数,如果函数返回True则符合条件。def f1(x)
def fi(x):
if x > 22:
return True
else:
return False ret = filter(f1,[1,2,33,44])
for i in ret print(i)
打印输出33 44
或者
ret = filter(lambda x : x > 22, [11,22,33,44]) for i in ret: print (i)
map():
map(函数,可迭代对象)
对于[1,2,3,4,5]对每一个元素加100,可以如下操作
def f1(x): return x+100 ret = map(f1,[1,2,3,4,5]) for i in ret: print (i)
返回值
101
102
103
104
可以改进如下:
ret = map(lambda x : x+100, [1,2,3,4,5]) for i in ret: print (i)
globals()显示全局变量
def f1() name = 123 print (locals()) print (globals())
f1()
同理locals()获取局部变量
isinstance()判断某个对象是否由某个类创建的
li = [11,22] r = ininstance(li, list) print (r)
issubclass() 判断是不是子类
iter()创建一个可以被迭代的对象
obj = iter([11,22,33,44]) r1 = next(obj) print(r1) r2 = next(obj) print (r2)
pow(2,10)幂运算 2的10次方
reverse() 对一个列表或者字典的反转
round()四舍五入
sum()求和
r = sum([11,22,33,44])
print (r)
110
import random random.randrange() 与 r = __import__(random) r.randrange() 是一样的
函数可以做参数:
def x(): print("xxx") print(x)
返回值是一个地址。说明这个函数是在这个内存地址。说明x指向了一个内存。
x()则是执行这个函数。
所以函数可以做参数。定义f3
def f3(arg): print(arg)
可以调用f3(x)