标签:rip upd wrapper rename 影响 join readline 一个 opp
+ - * / // % **
+ - * / // % **
可变 | 不可变 |
---|---|
列表,字典,集合 | 字符串,整形,浮点型 |
有序 | 无序 |
---|---|
字符串,列表,元组 | 字典,集合 |
存一个值 | 存多个值 |
---|---|
整型,浮点型,字符串 | 列表,集合,字典,元组 |
l1= [1,1]
l2 = l1
l1 = [1,2,[1,2]]
import copy
l2 = copy.copy(l1)
l1 = [1,2,3,[2,3]]
import copy
l2 = copy.deepcopy(l1)
当l2为l1的深拷贝对象时,l1内部的元素发生变换,l2都不会发生变化
==拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的==
当python3解释器启动,并生成变量时,会以unicode的形式把变量读入内存,当我们使用print方法时,print会自动按照终端的字符编码 编码unicode形式的变量
生成变量时以unicode丢入内存,终端时gbk,还是utf8,这终端都可以识别。
生成变量时以utf8丢入内存,终端为utf8,可以,但是终端为gbk,不可以了。==错误==
with open(文件名,打开模式,编码格式) as f:
f.操作命令
with open(文件一),open(文件二),open(文件三)……
with open('a.txt','r',encoding='utf8') as fr, open('a_swap.txt','w',encoding='utf8') as fw:
data = fr.read()
# 做一些处理之后
fw.write(data)
fw.flush()
import os
os.remove('a.txt')
os.rename('a_swap.txt','a.txt')
def 函数名():
代码块
def f1():
return 2
f1()
f = f1()
import random
import time
with open('0531总复习.md','r',encodint='utf8') as fr:
for i in range(50):
fr.read(random.randint(1,300))
time.sleep(30)
def f1():
pass
# 1.引用
f = f1
# 2.当作返回值
def f2():
return f1
# 3. 当作参数传入
def f3(func):
func()
f3(f1)
# 4. 作为容器元素
lis = [1,2,3,[2,3],f1,f2,f3]
def f1():
def f2():
pass
作用域: 全局的变量和局部的变量没有任何关系,即使两者中有同一名字的变量,同意名字的变量之间进行任何操作都不会影响对方
x = 10
def f1():
x = 2
print(x) # 2
f1()
print(x) # 10
lis = [1]
def f1():
lis[0] = 2
f1()
print(lis) # [2]
def f1(x):
def f2():
print(x)
return f2
f = f1(5) # f-->f2,x=5
f() # f()-->f2(),x=5 # 5
f() # 5
f3 = f1(3) # f-->f2,x=3
f3() # f()-->f2(),x=3 # 3
f3() # 3
def deco(func):
def wrapper(*args,**kwargs): # 赋值后的time_sleep
res = func(*args,**kwargs) # 真正的time_sleep
return res
return wrapper
@deco # time_sleep(赋值后的) = deco(time_sleep(真正的))
def time_sleep(name):
print(name)
return 123
is_login_dict = {'username': None}
def login_deco(func):
def wrapper(*args, **kwargs): # 赋值后的time_sleep
if not is_login_dict['username']:
username = input('请输入你的用户名》》》').strip()
if username != 'fanping':
print('非法登录')
return
is_login_dict['username'] = username
res = func(*args, **kwargs) # 真正的time_sleep
return res
else:
res = func(*args, **kwargs) # 真正的time_sleep
return res
return wrapper
@login_deco
def shopping():
print('from shopping')
@login_deco
def withdraw():
print('from withdraw')
is_login_dict = {'username': None}
def auth(origin):
def login_deco(func):
def wrapper(*args, **kwargs): # 赋值后的time_sleep
if origin == 'file':
if not is_login_dict['username']:
username = input('请输入你的用户名》》》').strip()
if username != 'fanping':
print('非法登录')
return
is_login_dict['username'] = username
res = func(*args, **kwargs) # 真正的time_sleep
return res
else:
res = func(*args, **kwargs) # 真正的time_sleep
return res
elif origin == 'mongodb':
print('非法登录')
else:
print('dsb')
return wrapper
return login_deco
# f = origin('file') # login_deco
# shopping = f(shopping)
# shopping()
@auth('file')
def shopping():
print('from shopping')
@auth('mongodb')
def withdraw():
print('from withdraw')
标签:rip upd wrapper rename 影响 join readline 一个 opp
原文地址:https://www.cnblogs.com/masterjian924/p/10960567.html