本书所用 Python3.4.3(32bits)
IDLE建议:输入pr TAB。
判断、循环语句很重视缩进。
Built-in Function,内置函数。例如print(),input()。
Python的变量不需要事先声明,直接给一个合法的名字赋值,这个变量就生成了。
在IDLE中输入dir(__builtins__)可以看到Python提供的内置函数列表。
help()这个BIF可以用于显示BIF的功能描述。
每节课对应的课后作业需要在鱼C论坛完成。
print(""" ... ... """)
import random
a = random.randint(1,10)
- type()
- isinstance()
- / 正常除法
- // 地板除法(向下取整)
- ** 优先级运算
3<4<5
small = x if x<y else y
assert 3<4
自动调用迭代器的next()方法
for i in range(1,10,2):print(i)
终止当前循环,跳出循环体。
终止本轮循环,测试循环条件,开始下一轮循环。
可以创建一个鱼龙混杂的列表。
- append():将一个元素添加至列表末尾
- extend():使用一个列表来扩展另一个列表
- insert(元素,位置)
- 元素位置对调:
a[1],a[4] = a[4],a[1]
- remove():根据内容
- del:根据位置。也可以删除整个列表。
- pop():删除最后一个元素。也可以加索引参数。
a[3:9] 列表分片就是建立原列表的一个拷贝。
三元、步长:list[0:9:2]
- 比大小。
- +连接,*复制。
- in、not in。
- count():返回次数。count(sub[,start[,end]])
- index():返回位置。
- reverse():将列表翻转。
- sort():默认从小到大排序。sort(func,key,reverse)。
list2 = list1[:] list3 = list1 2是复制,独立;3是引用,附属。
元组无法直接改变单个元素。
tuple1 = (1,3,2,4,6) #圆括号
tuple2 = tuple1[:]
temp = 1,2,3 #逗号是关键
type(temp)
8 * (2,)
temp = temp[:2]+temp[3:]
del temp
“通过拼接旧字符串的各个部分得到新字符串”的方式并不是真正意义上的改变原始字符串,只是将变量指向了新的字符串(旧的字符串失去变量的引用,会被Python的垃圾回收机制释放掉)。
- casefold():转为小写字符。
- count()。
- find()、index():返回位置。找不到时前者返回-1,后者抛出异常。
- join():以字符串作为分隔符插入到另一字符串所有字符之间。
- split():拆分字符串。
- replace(old,new[,count]):替换。
- format():
"{0} love {1},{a} hate {b}".format("I","You",a="He",b="She") - 格式化操作符:
'%#X' % 100 - 转义字符及含义。
- list()、tuple()、str():把一个可迭代对象转换为列表/元组/字符串。
- len():返回长度。
- max()/min():返回序列最大/小值,要保证序列或参数的数据类型统一。
- sum():返回总和。sum(iterable[,start])
- sorted():sort()实现列表原地排序,sorted()返回一个排序后的新列表。
- reverse():区别同上。返回一个迭代器对象。
- enumerate():生成由二元组构成的一个迭代对象。
- zip():返回由各个可迭代参数共同组成的元组。
- def
在传入实参时指定形参的变量名。
用于不确定多个参数。 参数前加上星号“*”打包。 多个参数时需要使用关键字参数。 参数为列表a时需要在前面加星号“*”解包。 **收集方式将参数打包成字典。
Python只有函数,没有过程。所有的函数都有返回值。
Python可以动态确定函数返回类型。
函数外边无法访问到函数内部的局部变量。 在函数中可以访问全局变量,但不好修改,因为会再在函数内部新建其同名局部变量。
君上之君,非我之君。
如果在一个内部函数里,对在外部作用域(非全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。 可用nonlocal破之。
创建匿名函数。简单方便临时。方便filter()、map()之类的BIF。
g = lambda x,y:x+y
g(3,4)
- filter(func or none,iterable):过滤。
- map():映射。返回加工后的新序列。
与哈希(hash)、关系数组是一个概念。 字典是Python中唯一的映射类型。
a = dict(one=1,two=2,three=3)
b = {'one':1 , 'two':2 , 'three':3}
c = dict(zip(['one','two','three'],[1,2,3]))
d = dict([('one',1),('two',2),('three',3)]) #dict(元组或列表)
e = dict({'one':1 , 'two':2 , 'three':3})
- fromkeys():创建新字典。
- keys()/values()/items():访问字典中的键/值/项(键与值)。
- get()/setdefault():前者找不到时返回none,可设定默认返回值。后者找不到时自动添加。
- in/not in 操作符。
- clear():清空字典。赋值为空字典有风险:原字典并未被清空,只重定向至新字典。
- copy():复制字典。独立。
- pop()/popitem():删除项并显示。前者弹出对应键的值,后者弹出一个项。
- update():添加项。
**打包解包。
用大括号但没有映射关系。同样无序。会自动把重复元素清理掉。 因为无序,所以列表转集合再转列表时会乱序。
- 不能像序列一样用下标,只能用迭代。
- in/not in。
- add()/remove():添加元素。删除已知元素。
frozenset():像元组一样不能随意增加或删除元素。
open(file , mode='r' , buffering=-1 , encoding=None , errors=None , newline=None , closefd=True , opener=None) f = open("record.txt")
close()。
- read()/readline()
- tell()
- seek()
- list()
w是重写,a是追加。
import os
- getcwd():返回当前目录。
- chdir(path):改变当前目录。
- listdir(path='.'):当前目录下的文件和文件夹。
- mkdir(path):创建新文件夹。
- makedirs(path):创建多层目录。
- remove(path)/rmdir(path)/removedirs(path):删除文件/目录/多层目录。
- rename(old , new)
- system(command)
- walk(top):遍历。
- path模块。
- basename(path)/dirname(path):获取文件/路径名。
- join(path1[,path2[,...]]):合并路径与文件名
- split(path)/splitext(path):前者分割路径与文件名,后者分割文件与扩展名。
- getsize(file):获取文件尺寸,单位Byte。
- getatime(file)/getctime(file)/getmtime(file):获取文件的最近访问、创建、修改时间。单位浮点型秒数,可用time模块的gmtime()/localtime()换算。
可以容易地将列表、字典这类复杂数据类型存储为文件。 几乎可以把所有的Python对象转化为二进制的形式存放。pickling/unpickling。