基本语法特点
背景:最近学习了廖雪峰老师的Python3.5教程,做个学习笔记。因为本人工作用的是Java,所以主要跟Java语法做比较。
感觉Python是弱类型,而不是完全无类型
编码方式:内存(定长寻址)中上用定长编码(Unicode,GBK),磁盘(网页文件)和传输时使用UTF-8,节省空间
字符格式化参照printf
内置数组list、tuple,相当灵活,
- 可以负数做索引,用于倒数
- 可以追加(append),可以指定位置添加元素(insert)
- 可以像堆栈一样pop
- 可以元素类型不相同(强类型语言完全做不到这一点)
- 可以元素也是list(实现多元数组)
条件判断if..elif..else
循环for..in..和while
dict(Map)和set
函数和高级特性
from python文件名不包含.py import 函数名
函数的参数,是我看了最费力的一节,看了三遍还是没完全看懂。智商捉急也好,无心恋战也罢,等以后遇到再回来仔细看吧,看懂的要点如下:
- 函数使用def 函数名(参数列表): 和缩进来表示
- Python函数传值,不是传参
- 默认参数放在后面,调用时候如果跳过默认参数,后面的默认参数必须注明参数名,例如
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 国际许可协议进行许可。