python s13 day04

时间:2022-10-28 23:41:49
1.1 all() 和 any( )

 

all()
any()
 
0,None,"", [], (),{} #布尔值为0的 列举,None ,空列表,空元祖,空
print(bool(()))
 
所有为真,才为真
n = all([1,2,3,None])
print(n)
 
只要有真,就为真
n = any([[],0,"",None])
print(n)
 
ascii() # 自动执行对象的 __repr__
class Foo:
def __repr__(self):
return "444"
 
n = ascii(Foo())
print(n)
bin()
oct()
hex()
print(bin(5))
print(oct(9))
print(hex(15))
 
 
1.2、callable( )
li=[11,22,33,44,]
def f1(arg):
    arg.append(55)
 
 
#li = f1(li)  ##从新复制的,函数默认返回None
f1(li)
print(li)
 
def f1():
    pass
 
f2=123
f2()
 
print(callable(f1)) #验证函数是否可执行
print(callable(f2))
 
==========================================================================
 
#char() #内置函    把一个数字转化为字母
#ord()  #内置函数  把一个字母转化为数字
 
>>> ord("存")
23384
>>> chr(23384)
'存'
>>>
 
r=chr(55)
print(r)
n=ord("a")
print(n)
 
'''
 
'''
import random  #生成随机验证码
li= []
for i in range(6):
    temp=random.randrange(65,90)
    c=chr(temp)
    li.append(c)
 
result="".join(li)
print(result)
 
import random  #生成随机验证码
li= []
 
 
for i in range(6):
    r=random.randrange(0,5) #这个本来就是不确定法的,所以当指定的数值出现时,机会生成个 str()字符串形式,增加到列表中。
    if r==2 or r ==4:
       num=random.randrange(0,10)
       li.append(str(num)) # 注意此处的
    else:
       temp=random.randrange(65,90)
       c=chr(temp)
       li.append(c)
result=''.join(li)
print(result)
 
 #生成随机验证码方法三
import random    
li= []
code=[]
for i in range(6):
    if i ==random.randint(1,5):
        code.append(random.randint(1,5))
 
    else:
        temp=random.randint(65,90)
        code.append(chr(temp))
print(code)
 
 
 
####################################################
 
'''
compile()      #专门用来编译,将字符串编译成 python 代码
 
s='print (123)'
r
 
 
 
两都执行 python代码的,不同的是结果有无返回。。。。
#exec()  #函数显更niubi ,接收代码或者字符串。无返回值
#eval()  #执行专门 接收处理 表达式. 返回一个结果有返回值。【用~的多】
 
需求实现,给你一个excel,利用eval处理;
 
'''
'''
ret=exec('8*8') #exec无返回值,得不到64的值
print()
 
ret=eval('7+9+9')
print(ret)
 
ret=eval('print (123)') #eval执行表达式,就像是 字符串。
print (ret)
执行结果:
 
None
25
123
None
 
'''
print (dir(list))  #内部函数
help (list)      #功能显示
 
'''
 
'''
#需求实现:分页的实现。
#共有97页,每页显示10条,需要多少页。
r=divmod(199,10) #a 除以b 得到的商和余数。
print(r[0])
print(r[1])
 
n,m=r[0],r[1]
执行结果:
19
9
 
 
==================================================================
#对象和类区别?
#s='alex'  #对象【str】 'alex'===> str , list
 
#对象是类的实例
#用于判断某个对象-->是否为某个类的实例。
s='alex'
r=isinstance(s,dict)
 
print (r)
 
#字典才是字典的实例,
s=[11,11,11]
b=isinstance(s,list)
print(b)
 
'''
 
################################################
'''
#字典和列表,元祖都是可迭代的对象。
#Python内建的filter()函数用于过滤序列。
#和map()类似,filter()也接收一个函数和一个序列 。
#和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
 
#filter(函数,可迭代对象)
def f2(a):
if a>22:
return True
li=[11,22,33,44,55] ret=filter(f2,li)
print(ret) #因为ret 是个元素,是个filter 类型。
print(list(ret))
print(tuple(ret))
#filter内部,循环第二个参数,
#根据True 或者 false
执行结果:
<filter object at 0x0000010B5E6E2048>
[33, 44, 55]
()
 
 
#方法二:【三元运算】
lst = [11,22,33,44,55]
y = [a for a in lst if a > 22]
 
print(y)
 
 
 
#lambda 自动return True false
f1=lambda a:a>30
ret=f1(90)
print(ret)   #返回的是True.可用在此处~~~~
 
##比较的是:lambda也是函数。通过他也能实现出来。
llit=[32,32,13,78,79]
result=filter(lambda a: a>32,llit)
print(list(result))
 
'''
 
##########################################################
'''
#map()函数
 
#此函数类加+100
list1=[11,22,33,44,55]
def f1(args):
    result=[]
    for i in args:
        result.append(100+i)
 
    return result
f1(list1)
print(f1(list1))
 
#进行更简单的方法,引出map()
#map(函数,可迭代的对象(PS:可以for 循环的东西,如list,tuple.....))
 
 
list1=[11,22,33,44,55]
def f2(a):
return a+100
result=map(f2,list1)
print (result)
print(list(result))
执行结果:
<map object at 0x00000223B5EA8588>
[111, 122, 133, 144, 155]
 
对比的是:
list1=[11,22,33,44,55]
def f2(a):
return a+100
result=map(f2,list1)
print (result) #打印出类型
print(tuple(result)) #此处使用的tuple可迭代的对象。。
执行结果:
<map object at 0x000002E5DC3F8588>
(111, 122, 133, 144, 155)
 
print('=======================')
#NEXT....也可简单的用lambda函数。
result=map(lambda a:a+100,list1)
print(result)
print(list(result))
 
#总结:
#filter #函数返回True,将元素添加到结果中
#map #将函数返回值添加到结果中。。。。
 
#学生附加题
li = [11,22,33,44,55]
result = map(lambda a:a+100,list(filter(lambda a:a>33,li)))
print (list(result))
 
'''
##############################################################
'''
# locals()  #局部变量
# globals() #全局变量
#
# id()     #内存地址
# isinstance()
# issubclass()
 
byte( )内置函数使用。
#len()     #使用字典啊,列表啊
s='李姐'
print(len(s)) #说6或者2都对,
# python3更进步了【默认显示是字符】。。
#python2 显示的是【显示是字节】。
s='李姐'
b=bytes(s,encoding='utf-8') #byte 是字符串转换为 字节。【从硬盘到内存】
print(len(b)) #python3用这种方式显示的字节。。【重要呢~~~】
 
执行结果:
"C:\Program Files\Python35\python.exe" "C:/Users/ju do it/PycharmProjects/untitled1/day04/笔记部分/s2.py"
2
6
 
========================================================================================================================
 
'''
提示:
#将一个字符串转换为一个字典和列表等,字符串内部的必须是双引号。
 
 
import json
s='[1,2,3,"ew",2]' ##此处的里的元素是双引号,不能是单引号。注意
#s='["k1":"v1"]'
n=json.loads(s)
print(type(n),n)
执行结果:
<class 'list'> [1, 2, 3, 'ew', 2]
 
 
#NEXT
 
r=input("input:")  #定义个字符串,因为默认的输入的为字符串。
 
#dic=json.loads(r)
dic='server 10.10 122.32,ip:192.168.1.1 weight:23,maxconn:30'
bk=dic['backend:']
rb="server %s %s weight %d  maxconn %d" % (dic['record'])['server'],\
                                           dic['record']['server'],\
                                           dic['record']['weight'],\
                                           dic['record']['maxcon'])
 
 
'''
########################################################
'''
#map() 对比filter()
 
#@property  和  __repr__(self):
#repr()
#staticmethod()
 
#reversed() #反转
#round()  四舍五入
 
#slice() #
 
l1=["alex",11,22,]
l2=['is',12,23,]
l3=['sb',13,14]
r=zip(l1,l2,l3)
#print(list(r))
 
temp=list(r)[0]
ret=' '.join(temp)
print(temp)
print(ret)
'''
###########################################
###########################################
 
'''
 
 
def login(func):
#print ('登录成功!')
def iner():
print ('登录成功!') func() #这里也是第一次执行f1()
#return func() #这里是第二次执行f1()
#注意的是遇到了 return 就会终止~执行。
print ('退出登录') #return iner() #正规写法
return iner #返回函数体等同于和那个执行函数 inner( )= f1( )函数。

# 执行函数

@login

def f1():

    print('F1')

 

f1()

 
#@+函数名
#功能:  1. 自动执行outer()函数并将下面的函数当f1当做参数传递
#           2. 将login() 函数返回值,重新赋值给 f1 .
 
'''
def login(func):
#print ('登录成功!')
def iner():
print ('登录成功!')
r=func() #这里是第一次执行f1()
print ('退出登录') return r #返回f1()函数执行的return值。。 #return iner() #错误写法,返回的是None.就说为空。
return iner #返回函数体 @login
def f1():
print('F1')
return 'f1操作成功' ###main code####
ret=f1()
print ("返回值",ret)
执行结果:
登录成功!
F1
退出登录
返回值 f1操作成功
 
'''
 
#########万能参数##########;
'''
def login(func):
#print ('登录成功!')
def iner(*args,**kwargs):
print ('登录成功!')
r=func(*args,**kwargs) #这里是第一次执行f1()
print ('退出登录') #return r #返回f1()函数执行的return值。。
#对比,这里才是真正执行 下面函数的地方。
return r #return iner() #错误写法
return iner #返回函数体 @login
def f1(arg):
print('F1',arg)
return 'f1操作成功' @login
def f2(a1,a2):
print('F2',a1,a2)
return 'f2操作成功' @login
def f3():
print('F3')
return 'f3操作成功' #main code 执行函数;
ret=f1('砍他')
print ("返回值",ret)
 
执行结果:
登录成功!
F1 砍他
退出登录
返回值 f1操作成功
##################################################