笔记

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 go") ---------let 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'}

  

原文地址:https://www.cnblogs.com/jokerq/p/8678108.html