Python3.5学习笔记(一)

基本语法特点


背景:最近学习了廖雪峰老师的Python3.5教程,做个学习笔记。因为本人工作用的是Java,所以主要跟Java语法做比较。

感觉Python是弱类型,而不是完全无类型

编码方式:内存(定长寻址)中上用定长编码(Unicode,GBK),磁盘(网页文件)和传输时使用UTF-8,节省空间

字符格式化参照printf

内置数组list、tuple,相当灵活,

  1. 可以负数做索引,用于倒数
  2. 可以追加(append),可以指定位置添加元素(insert)
  3. 可以像堆栈一样pop
  4. 可以元素类型不相同(强类型语言完全做不到这一点)
  5. 可以元素也是list(实现多元数组)

条件判断if..elif..else

循环for..in..和while

dict(Map)和set

函数和高级特性


from python文件名不包含.py import 函数名

函数的参数,是我看了最费力的一节,看了三遍还是没完全看懂。智商捉急也好,无心恋战也罢,等以后遇到再回来仔细看吧,看懂的要点如下:

  1. 函数使用def  函数名(参数列表): 和缩进来表示
  2. Python函数传值,不是传参
  3. 默认参数放在后面,调用时候如果跳过默认参数,后面的默认参数必须注明参数名,例如
def enroll(name, gender, age=6, city='Beijing'):
     pass
enroll('Adam', 'M', city='Tianjin')

4.定义默认参数要牢记一点:默认参数必须指向不变对象!

后面的几种参数,实在是智商余额不足,只能看懂一点点,还请理解的大牛赐教!

递归和尾递归调用:注意迭代时候堆栈层数即可

切片: L[0:3]  L[-2:]  前10个数,每两个取一个:L[:10:2]  字符串也可以作为一种数组来这样做

让还在String.subString .indexOf ,charAt的我深深感受到浪费了好多绳命

py直接用for k, v in d.items()来迭代dict(Map),如此简单明了,当然缺陷就是可能不按照初始化的顺序来,但是Java里面也是同样情况。对于Java重度依赖患者,py还提供了,如下疗法:

for i, value in enumerate([‘A’, ‘B’, ‘C’]):
       print(i, value)

再来看下列表生成式: [x * x for x in range(1, 11)]  [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

还可以加上if只生成偶数平方数  [x * x for x in range(1, 11) if x % 2 == 0]

双层循环: [m + n for m in ‘ABC’ for n in ‘XYZ’]—->[‘AX’, ‘AY’, ‘AZ’, ‘BX’, ‘BY’, ‘BZ’, ‘CX’, ‘CY’, ‘CZ’]

列出当前文件夹的目录 : [d for d in os.listdir(‘.’)],这是一行顶Java10行的节奏啊

生成器:斐波那契数列生成器

def fib(max):
     n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return ‘done’

迭代器:Iterable(for…in)和Iterator(next)对象的差别

把list、dict、str等Iterable变成Iterator可以使用iter()函数:isinstance(iter(‘abc’), Iterator)

第一篇完结

人生苦短,我用Python

本人也是初学入门,有资料或者心得,请不吝赐教,联系方式keras4j@gmail.com


知识共享许可协议
本作品采用知识共享署名-禁止演绎 4.0 国际许可协议进行许可。

留下评论