笔记
1.python进制表示 0b**:二进制 例: 0b10 ------- 2
0o**:八进制 0o10 --------- 8
0x:16禁止 0x10 --------- 16
其他进制转换为二进制 bin()方法
其他进制转换为八进制 oct()方法
其他进制转换为十六进制 hex()方法
其他进制转换为十进制 int()方法
2. 3/2 ---- 1.5 3//2 --------- 1
2**3代表2的三次方
3.字符串前加r,字符串变为原始字符串 ,输出则原样输出
例:print(r"let \n go") ---------let \n go
4."hello world"[0:5]截取字符串为左闭右开--------‘hello’
"hello world"[6:]截取字符串到最后(第二位不能为-1,否则没有最后一位)-------‘world’
5.“组”
列表(list):[0,1,2,3,4,5] (可以加入任意类型,无序)
列表增加元素: append()方法
元祖(tuple):(0,1,2,3,4,5)
有顺序
元组不可修改元素
#若元组中包含列表,可以修改列表中的元素 例: a=(1,2,[3,4,5]) a[2][1] = 9
序列解包: a,b = 1,2 --------- a=1 b=2
a,b = (1,2) --------- a=1 b=2
集合(set):{1,2,3}
集合操作:{}-{} :求集合差集
{}&{} :求集合交集
{} | {} :求集合的合集
字典(dict):{key1:value1,key2:value2,key3:value3}
#字典不能有相同的key,如果有,虽然不报错,但前面的被删除,剩下最后的
列表不能作为key,元组可以作为key
{} :空的大括号为字典类型,不是集合类型
6.运算符
当 and 两边都为 True值 返回 右边的值 例: 1 and 2 ------- 2 ‘a’ and 'b' ---------- 'b'
当 or 两边都为 True值 返回左边的值 例: 1 or 2 --------- 1
(当两边都为 true时,计算机在运算时 and需要比较左右两个值 才能给出结果 ; or运算符 在比较左边为true是可以得出结果,所以直接返回结果)
1 or 2 and 3 ----------- 1 #同级运算符 从左到右运算,但and优先级大于or
in 运算符 在判断字典时 匹配的是key 例; ‘a’ in {‘a’:1} --------- True
==比较的是两个变量的值, is运算符 比较的是两个变量的地址 例: 1==1.0 ------- True 1 is 1.0 ----------- False
{1,2,3,} == {2,1,3} ---------- true #列表无序
(1,2,3) == (2,1,3) ---------- False #元组有序
运算符优先级(不包括同级)
python 中*args和**kw (名字任意)
*args是非关键字参数,用于元组,**kw(**kwargs)是关键字参数,用于字典
当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。
# *args
def fun1(farg,*args): print("farg: ",farg) for value in args: print("args value:",value) fun1(1,"two",3) ---------------------------------------------------------------- farg: 1 args value: two args value: 3
# **kwargs def fun2(farg,**kwargs): print("farg: ",farg) for key in kwargs: print("kwargs key:%s ,value:%s" %(key,kwargs[key])) fun2(1,myarg2="two",myarg3 = 3) -------------------------------------------------------------------- farg: 1 kwargs key:myarg2 ,value:two kwargs key:myarg3 ,value:3
也可以在传参时代替
def fun3(arg1, arg2, arg3): print("arg1:", arg1) print("arg2:", arg2) print("arg3:", arg3) args = ["two", 3] # list kwargs = {"arg3": 3, "arg2": "two"} # dict fun3(1, *args) fun3(1, **kwargs) -------------------------------------------------------------------- arg1: 1 arg2: two arg3: 3 arg1: 1 arg2: two arg3: 3
global声明此变量为全局变量
nonlocal声明此变量不是局部变量
#问题描述:给出每次走的步数 输出总步数 #非闭包实现 origin = 0 def factory(step): global origin step_normal = origin + step origin = step_normal return step_normal print(factory(2)) print(factory(5)) print(factory(8)) ------------------------------------------------------------------- 2 7 15
函数式编程
闭包(函数+环境变量):
#问题描述:给出每次走的步数 输出总步数 #闭包实现 origion = 0 def factory(pos): def go(step): nonlocal pos #nonlocal声明此变量不是局部变量 step_normal = pos + step pos = step_normal return step_normal return go f = factory(origion) print(f(2)) print(f(5)) print(f(8)) print(f.__closure__[0].cell_contents)#f.__closure__闭包的环境变量 -------------------------------------------------------------------------- 2 7 15 15
匿名函数
#普通函数 def add(x,y): return x+y print(add(1,2)) #匿名函数 f = lambda x,y:x+y # :前面为参数,:后面为代码块 print(f(1,2)) ------------------------------------------------------------------- 3 3
三目运算符
#条件为真时返回的结果 if 条件判断 else 条件为假时返回的结果 x = 2 y = 1 r = x if x>y else y print(r) ----------------------------------------------------------------------- 2
map函数(映射)
#map list_x = [1,2,3,4,5,6] def square(x): return x*x r = map(square,list_x) print(type(r)) print(list(r)) ------------------------------------------- <class 'map'> [1, 4, 9, 16, 25, 36]
map函数与匿名函数结合
list_x = [1,2,3,4,5,6,7,8] list_y = [1,2,3,4,5,6] r = map(lambda x,y:x*x+y,list_x,list_y) #参数少的决定 print(list(r)) ---------------------------------------------------------------- [2, 6, 12, 20, 30, 42]
reduce函数 (连续计算)
from functools import reduce list_x = [1,2,3,4,5,6,7,8] r = reduce(lambda x,y:x+y,list_x)#(((1+2)+3)+4)+.......... print(r) ---------------------------------------------------------- 36
filter函数(过滤)
#filter list_x = [1,0,1,0,1,0,1,0] r = filter(lambda x:True if x==1 else False,list_x) print(list(r)) ------------------------------------------------------------------- [1, 1, 1, 1]
装饰器
#简单装饰器 import time def decorator(func): def wrapper(): print(time.time())#输出一个时间戳 func() return wrapper @decorator#添加装饰器,(方法名) def f1(): print("This is a function") f1() --------------------------------------------------------------- 1522898882.6890862 This is a function
因为装饰器需要应用于多种方法,而每个方法的需要的参数不一定一致,所以加以改进
#装饰器 import time def decorator(func): def wrapper(*args,**kwargs): print(time.time())#输出一个时间戳 func(*args,**kwargs) return wrapper @decorator#添加装饰器,(方法名) def f1(func_name): print('This is a function named: '+ func_name) @decorator#添加装饰器,(方法名) def f2(func_name1,func_name2, **kwargs): print('This is a function named: '+ func_name1) print('This is a function named: ' + func_name2) print(kwargs) f1("function") f2("function1","function2",a=1,b=2,c="1,2,3") ------------------------------------------------------------------------ 1522899760.5345087 This is a function named: function 1522899760.5345087 This is a function named: function1 This is a function named: function2 {'a': 1, 'b': 2, 'c': '1,2,3'}