Python__copy
- copy模块用于对象的拷贝操作。该模块只提供了两个主要的方法:copy.copy与copy.deepcopy,分别表示浅复制与深复制。
- 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。即浅复制只复制对象本身,没有复制该对象所引用的对象。
- 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。即创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。虽然实际上会共享不可变的子对象,但不影响它们的相互独立性。
Python__random
在Python中的库可以分为三种:标准库(也可以叫做内置库),第三方库,自定义库。接下来将记录一下几个常用的标准库的用法:
- random()——返回随机生成的一个实数,它在[0.1)范围内
import random
print(random.random()) # 随机生成一个0-1的随机数
- uniform(a,b) —— 随机生成a-b之间随机浮点数
import random
print(random.uniform(1,2)) # 随机生成一个1-2的随机浮点数
- randint(a,b)——生成a-b的随机整数,包括a, b
import random
print(random.randint(1,3)) # 随机生成1,2,3的随机数
- randrange——在某个范围生成一个随机数
import random
print(random.randrange(10)) # 随机生成0-10的随机数,不包括10
print(random.randrange(1,10)) # 随机生成1-10的随机数,不包括10
print(random.randrange(1,10,2)) # 随机生成1-10的随机数,不包括10,步数为2,即可能产生的随机数为:1,3,5,7,9
- choice——在可迭代对象中随机取一个元素
import random
print(random.choice("abc")) # 在字符串abc中随机取一个元素
print(random.choice([1,2,3])) # 在列表[1,2,3]中随机取一个元素
- sample(a,n)——在可迭代对象a中随机取n个元素,组成一个列表
import random
print(random.sample("abcdefg",3)) # 在字符串abcdefg,随机取三个元素组成一个列表
print(random.sample([1,2,3,4,5,6],3)) # 在列表[1,2,3,4,5,6]中随机取三个元素组成一个
Python__utf-8
- 为什么在python中需要使用“utf-8”进行转码呢?
因为:在python内部是用unicode的,由于windows的命令行输入的是GBK编码,可以要先转为unicode,要转url encode时,先把str转为utf-8。
Python__str()
- str() 函数将对象转化为适于人阅读的形式。
- 字符串长度获取:len(str)
- 全部大写:str.upper()
- 全部小写:str.lower()
- 大小写互换:str.swapcase()
- 首字母大写,其余小写:str.capitalize()
- 首字母大写:str.title()
Python__枚举Enum
例子:
from enum import Enum
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
@unique
class Weekday(Enum):
Sun = 0 # Sun的value被设定为0
Mon = 1
Tue = 2
Wed = 3
Thu = 4
Fri = 5
Sat = 6
for name, member in Month.__members__.items():
print(name, '=>', member, ',', member.value)
我们就获得了Month
类型的枚举类,可以直接使用Month.Jan
来引用一个常量,或者枚举它的所有成员。
Python__@
'@' 用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰。出现在函数定义的前一行,不允许和函数定义在同一行。一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西。
示例:
def square_sum(fn):
def square(*args):
print("1---", args)
n = args[0]
print("2==", n*(n-1)*(2*n-1)/6)
print(fn.__name__)
fn(n*(n-1)*(2*n-1)/6)
print("*"*15)
return fn(n*(n-1)*(2*n-1)/6)
return square
@square_sum
def sum_a(a):
print("3=", a)
sum_a(10)
结果
1--- (10,)
2== 285
sum_a
3= 285
***************
3= 285
可以看出,他是先执行修饰器函数,然后有return fn的时候,修饰器下的函数才是生效的,否则函数sum_a 是没有结果的。