1 Python允许用'''...'''
的格式表示多行内容
2空值是Python里一个特殊的值,用None
表示。None
不能理解为0
,因为0
是有意义的,而None
是一个特殊的空值。
3 理解变量,以下代码你一定会搞错
a = 'ABC'
b = a
a = 'XYZ'
print(b)
执行a = 'ABC'
,解释器创建了字符串'ABC'
和变量a
,并把a
指向'ABC'
:
执行b = a
,解释器创建了变量b
,并把b
指向a
指向的字符串'ABC'
:
执行a = 'XYZ'
,解释器创建了字符串'XYZ',并把a
的指向改为'XYZ'
,但b
并没有更改:
所以,最后打印变量b
的结果自然是'ABC'
了。
4字符编码的问题
Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。
本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8
编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431664106267f12e9bef7ee14cf6a8776a479bdec9b9000
熟悉tuple list set dic
tuple 元祖:但是tuple一旦初始化就不能修改list 列表:我认为相当一样vectordic: 相当于Map
set
collections:
namedtuple
来创建一个自定义的tuple
对象,并且规定了tuple
元素的个数,并可以用属性而不是索引来引用tuple
的某个元素。
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈defaultdic 使用dict
时,如果引用的Key不存在,就会抛出KeyError
。如果希望key不存在时,返回一个默认值,就可以用defaultdict
OrderedDict 如果要保持Key的顺序,可以用OrderedDict
Counter
是一个简单的计数器
这个功能你可能没有看到过
>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1
Python的函数返回多值的其实就是返回一个tuple
定义可变参数:在参数前面加了一个*
号 ,Python允许你在list或tuple前面加一个*
号,把list或tuple的元素变成可变参数传进去。关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
切片操作:
生成器:在Python中,这种一边循环一边计算的机制,称为生成器:generator函数式编程就是一种抽象程度很高的编程范式,函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。可以接受函数作为参数外,还可以把函数作为结果值返回闭包:注意到返回的函数在其定义内部引用了局部变量args
,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用匿名函数:匿名函数lambda x: x * x
with open('/Users/michael/test.txt', 'w') as f:
f.write('Hello, world!')
logging.basicConfig(level= logging.info) logging.info()
class Student(object):
pass
s = Student()
s.name = "dai"
s.age = 33
def set_score(self, score):
self.score = score
Student.set_core = set_score
2 python 允许多重继承