注:查看详细猛击这里
一,数字计算
#绝对值
i=abs(-123) print(i) #执行结果:123
#divmod() 两个数相除,得到商和余数。
r=divmod(10,3) #这个用于分页。
print(r) #执行结果:(3, 1)
#eval() #处理字符串类的表达式
ret = eval("1+3")
print(ret) 执行结果:4
ret = eval("a+9", {"a": 9})
print(ret) 执行结果:18
#pow() #求一个数的幂
print(pow(2,10)) #执行结果:1024
#round() #四舍五入
print(round(3.3)) #执行结果:3
二,all和any
#all(),循环参数,如果每个元素都为真,,那么all的返回值为真 r=all([True,True,False]) print(r)#执行结果:False print(all([123," ",()]))#执行结果:False #假的有:0,None,"",[],(,),{} ==> 0,None,空值 #any() 是和all相反的,只要有一个为真,则为真 print(any([None," "])) #执行结果:True
三、进制间的转换
#bin()#二进制 #oct()#八进制 #int()#十进制 #hex()#十六进制 print(bin(12))#将10进制的数12转成二进制 print(oct(12))#将10进制数8转成8进制 print(hex(12))#将10进制的数12转成16进制 #那么进制间的相互转换怎么转呢。如将8进制转为16进制 x=int("0o14",base=8) #先将8进制转为10进制,然后用10进制去转为16进制。 print(hex(x))
四,字节格式的转换
#bytes() #字节 #bytearray() #字节列表
########方式一######## s=bytes("李鹏",encoding="utf-8")) #将字符串转换成对应的字节
print(s)
########方式二########
x="李鹏".encode("utf-8")) #将字符串转换成对应的字节 #这个是用字符串的encode()方法
print(x)
x.decode()#字节转为字符串
五,ascii 的转换
#chr() #将ascii码数转为具体的变量 #ord() #将变量转为ascii码 print(chr(66)) #执行结果:B print(ord("A")) #执行结果:65
六,查看类的方法
#dir()#查看一个类提供的功能 print(dir(int)) help(int)#help比dir()更加明细
七,isinstance
#isinstance()判断某个对象是否属于某个类 args=[11,22] print(isinstance(args,(list,)),isinstance(args,(tuple,))) #执行结果:True, False class A: pass class B(A): pass print(isinstance(B(),A)) #执行结果是True print(type(B())==A) #执行结果是Flase
说明:type判断类型比较窄,不能判断继承关系的类。isinstance则可以判断所有的
八、lambda

注:lambda只是优化了代码量,并没有提高性能,同时反而增加了代码的易读性的难度,故不建议使用
九,filter 和map
map :遍历序列,对序列中每个元素进行操作,最终获取新的序列。

#map() #循环可迭代的对象,让每一个对象成为函数的参数,并执行函数 def f1(x): return x+10 #让所有的参数都进行一种操作 ret=map(f1,[1,23,4,5]) for i in ret: print(i) #执行结果:11,22,14,15
filter:对于序列中的元素进行筛选,最终获取符合条件的序列

#filter() #循环可以迭代的对象,让每一个对象成为函数的参数,并执行函数。 def f(x): if x>22: return True #filter()只能用来作为筛选工具。根据返回结果的真假来决定该参数的取舍 else: return False ret=filter(f,[11,22,33,44]) #让列表中的对象分别取执行f函数 for i in ret: print(i) #执行结果:33,44
十,hash值
#hash()#将一个字符串转为hash值。hash值是更有利于索引。常用于字典key中 print(hash("ffeffsfef")) #执行结果:-1868546631
十一,id
#id() 获取内存地址 i=2 print(id(i)) #执行结果:1665829344
十二,列表
#reversed() #将列表/元组/字符串进行反转 li=(1,2,3,4) for i in reversed(li): print(i)
#enumerate() #给列表增加一个序列
li=["a","b","c"]
dic={}
for key,value in enumerate(li,start=1):
dic[key]=value
print(dic) #执行结果:{1: 'a', 2: 'b', 3: 'c'}
#sorted() #给列表排序
li=[33,2,55,6]
li.sort()#对li列表进行排序,那么li列表本身序列就会发生改变
print(li)
li1=[33,2,55,6]
ret=sorted(li1)#对li列表进行排序,对排序结果生成新的列表,不改变原来列表
print(ret,li1)
char=["1","23","20","A","a","alex","_","赵","李","王"]
new_char=sorted(char)
print(new_char)
for i in new_char:
print(bytes(i,encoding="utf-8"))
"""
>>>执行结果:
[2, 6, 33, 55]
[2, 6, 33, 55] [33, 2, 55, 6]
['1', '20', '23', 'A', '_', 'a', 'alex', '李', '王', '赵']
b'1'
b'20'
b'23'
b'A'
b'_'
b'a'
b'alex'
b'\xe6\x9d\x8e'
b'\xe7\x8e\x8b'
b'\xe8\xb5\xb5'
"""
十三,zip
#zip() #将两个列表结合成一个新的列表 li1=[1,2,3,4] li2=["a","b","c","d"] r=zip(li1,li2) for i in r: print(i)
""" 执行结果: (1, 'a') (2, 'b') (3, 'c') (4, 'd') """
补充:
#生成随机验证码 import random tmp="" for i in range(4): x=random.randrange(0,4) #随机确定当i循环到第几次时才会出现x==3 if x==3: tmp+=str(random.randrange(0,10)) #当x==3时,当前这一位为数字 else: rad=random.randrange(65,91) tmp+=chr(rad) print(tmp)
十四、vars
本函数是实现返回对象object的属性和属性值的字典对象。如果默认不输入参数,就打印当前调用位置的属性和属性值,相当于locals()的功能。如果有参数输入,就只打印这个参数相应的属性和属性值。
print(vars()) """ 执行结果: {'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000000000655C88>, '__package__': None, '__author__': 'liujianzuo', '__spec__': None, '__doc__': None, '__builtins__': <module 'builtins' (built-in)>, '__cached__': None, '__file__': 'E:/py_test/s12_mokuai/s1.py', '__name__': '__main__'} """
其中最重要的几个参数:__doc__ __name__ __main__ __file__ __package__
print(__doc__) # python文件的注释 三引号 注释必须在开头,
print(__file__) #自身脚本文件加路径
print(__package__) # 当前文件为None
from s12_mokuai import s1 print(s1.__package__) # 导入模块文件的文件: 则输出导入模块文件的所在目录 from s12_mokuai import s1print(s1.__cached__) #导入的文件,则输出其缓存目录
重点1 __name__的重要性不言而喻
如下:
#有两个文件,s2.py和day1.py ##########s2.py print(__name__) print(__file__) ##############day1.py import s2 print(__name__) """ 首先,执行s2.py得到结果: __main__ D:/脚本/s2.py 其次执行day1.py得到的结果: s2 D:\脚本\s2.py __main__
由上面的执行结果可以知道,s2模块的print(__name__)在两次执行的结果是不一样的。这就是__name__的重要之处:
__name__是用来定义函数执行的主入口的。比如:刚才执行s2.py,那么s2.py就是函数主入口;后来执行day1.py,虽然导入了s2.py,但是函数执行的主入口是day1.py。同时可以发现,只有在执行函数主入口时,__name__返回的是“__mian__“。如果是非函数主入口,返回的是模块名。这就体现出了他的重要性,如下:
#将s2.py文件进行更改 ##########s2.py print(__file__) if __name__=="__main__": print(__name__) ##############day1.py import s2 print(__name__) """ 首先,执行s2.py得到结果: D:/脚本/s2.py __main__ 其次执行day1.py得到的结果: D:\脚本\s2.py __main__
由此可以得出: if __name__=="__main__": 可以用作来判断一个模块若果作为主函数时,才执行的某些代码。否则不执行
重点2 __file__ #自身脚本文件加路径
__file__的作用就在于可以获取当前文件所在的路径。
#第一种情况
import os,sys # print(os.getcwd()) print(os.path.dirname(__file__)) #输出当前文件所在的上级目录路径 p1 = os.path.dirname(__file__) p2 = "bin" new_dir = os.path.join(p1,p2) #将一个目录路径拼接在一起。 sys.path.append(new_dir) """ 执行结果: D:\脚本 D:\脚本\bin """
注意区别:
#第二种情况
sys.path.append("D:\脚本\bin")
上面虽然都是为增加模块导入路径;
第二种情况,导入路径是死值,如果整个代码移动到别的服务器上,那么文件路径必然会发生改变,那么就会导致模块导入失败。
第一种情况,要灵活很多,即使整改代码移动到别的服务器上,也不会因为路径名不正确运行不成功。
浙公网安备 33010602011771号