python:基础知识
基本数据类型
数字
整型,浮点型,布尔型,复数
组
序列,集合,字典
1 组
# 序列-字符串 str 不可变类型 # 序列-列表 list [1,2,3,4,5,6,'as'] 可变类型 # 序列-元组 tuple (1,2,3,4,5,6,'as') 不可变类型 #和列表选择、切片很相似 #type((1)) int;type(('as')) str 此处()不是元祖,而是运算符 # ord() 查询字符串返回对应的 ASCII 数值 # 集合 set {1,2,3,4,5} # 1 无序 # 2 不重复 {1,1,2,2,3,3} {1,2,3} # 3 差集- {1,2,3,4,5}-{3,4} {1,2,5} # 4 交集& # 5 并集| # 6 type({}) 为dict字典;set() 创建一个无序不重复元素集 # 字典 dict {'q':'打击','w':'前进'} # key不重复 # key需为不可变类型,不能为列表,可以为元组 # {} 定义空字典
2 集合
set {1,2,3,4,5}
1 无序 2 不重复 {1,1,2,2,3,3} {1,2,3} 3 差集- {1,2,3,4,5}-{3,4} {1,2,5} 4 交集& 5 并集| 6 type({}) 为dict字典;set() 创建一个无序不重复元素集
3 字典
dict {'q':'打击','w':'前进'} key不重复 key需为不可变类型,不能为列表,可以为元组 {} 定义空字典
注: 1.列表可以存放不同类型的数据,是最常用的Python数据类型。与字符串不同,列表元素支持改写。 2.列表和元组的区别在于:列表中的元素的值可以修改,而元组中的元素的值不可以修改。元组比列表更加安全,因为不能修改 3.集合一个功能是进行集合操作,另一个功能是消除重复的元素。
4 包、模块、类
# 区分包和文件夹 包内含__init__.py文件 此模块名为:init,内容可为空,加上,可解决 # import引入模块 # from t import c1 从t模块引入c1类、方法、变量或者 从t文件引入c1模块 # from t import * 可引入t所有类 不推荐,当命名冲突时难处理 # python 一行建议不超过80,换行,上行末尾加:\,不推荐,可用括号 # 包和模块不会被重复导入 # 避免循环引入模块
5 类
# 特殊类:枚举 enum (from enum import Enum) # 枚举标签名称最好用大写,表示常量 # 枚举的意义重在标签,不在数值 # 字典和类变量的缺点是:可变,值可被轻易更改;没有防止相同标签的功能 # 枚举类型:VIP.GREEN 枚举名称:VIP.GREEN.name 枚举值:VIP.GREEN.value # 枚举可以被for in遍历,遍历VIP.__members__.items()或VIP.__members,可将别名加入遍历 # 枚举可以做==比较,不能做大小比较 # 枚举值相同时,第二个标签将成为第一个的别名 # 用法:在数据库中存储数值,在代码中用标签代表类型,通过数字转换成数据类型 a=1 VIP(a) # 值需强制为整型数字,不许值相同时(from enum import IntEnum,unique) ,class VIP(IntEnum,unique):
#枚举案例
from enum import IntEnum,unique #from enum import Enum class VIP(IntEnum): YELLOW=1 RED=2 BLUE=2 GREEN=4 print(VIP.GREEN) print(VIP.GREEN.name) print(type(VIP.GREEN),type(VIP.GREEN.name)) print(VIP.GREEN.value) for v in VIP: print(v) for v in VIP.__members__: print(v) for v in VIP.__members__.items(): print(v) a=1 print(VIP(a))
6 函数
# 函数可以作为结果被返回,函数可以赋值给另外一个变量 # 闭包(和函数的作用域有关) # 闭包=函数+环境变量 # 环境变量:定义在函数外部,非全局变量,避免外部对其影响 # 环境变量保存在 函数.__closure__[0].cell_contents中 # nonlocal将变量转为环境变量 # 闭包容易造成内存泄漏,用面向对象更加主流 #三目运算 x if x>y else y # map 函数,序列 每个元素依次执行函数 # 结合lambda匿名函数使用 list_x=[1,2,3] list_y=[1,2,3] r=map(lambda x,y:x*x+y,list_x,list_y) # reduce在python3中已不是全局函数 from functools import reduce # 连续计算 返回结果
# 闭包案例展示
def curve_pre(): a=25 def curve(x): return a*x*x return curve f=curve_pre() print(f.__closure__) print(f.__closure__[0].cell_contents) print(f(2)) #闭包案例:计算走了多远 origin=1 def dis(pos): def do(x): nonlocal pos pos=x+pos return pos return do t=dis(origin) print(t(3)) print(t(3))
7 装饰器 decorator(AOP编程思想)
# 不改变原有函数,增加新的特性 # 最有价值的功能 @+装饰器的名字 不改变原函数调用方式 # 直接调用原函数即可,无需通过新函数(体现出原函数和新函数之间的关联) # 为满足原函数可任意传入参数,可在装饰器内的函数加入 可变参数(*任意+参数名):例如:wrapper(*args) # **kw 关键字参数,可以指定任意数量,打印kw会以字典形式出现 # 为支持**kw关键字参数,可在装饰器内部加入参数 **kw
# 装饰器案例
import time def decorator1(func): def wrapper(*args,**kw): func(*args,**kw) print(time.time()) return wrapper @decorator1 def f1(): print('打印现在时间:') #f=decorator1(f1) #f() 这里就可以看出装饰器的好处可以直接引用f1 f1() @decorator1 def f2(myName): print(myName,'打印现在时间:') f2('MA') @decorator1 def f3(myName,**kw): print(myName,'打印现在时间:') print(kw) f3('MA',a=1,b=2)
相关推荐
elizabethxxy 2020-11-06
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
夜斗不是神 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16
坚持是一种品质 2020-11-16
染血白衣 2020-11-16
huavhuahua 2020-11-20
meylovezn 2020-11-20
逍遥友 2020-11-20