-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Python 快速学习 #100
Comments
👍 |
好 |
学习一个语言, 我个人一般会先了解这些东西, 优先级依次排序
如果已经会多种语言了, 就会知道, 对于初学者来说, 语言特性才是最重要的
初学者先要学会使用这门语言, 更在意语言的数据结构, 有哪些内置的方法
调优, 性能, 垃圾回收, 内部原理等还不在学习范围之内
笔者最熟的语言是 Javascript, 因此可能会拿 Javascript 中的一些语法作为类比
如何打印
编码问题是 python2 最傻的问题
对于 python2.7,
#coding=utf-8
这句话绝对不能少数据类型
list 相当于 vector, vector 是更灵活的容器, 存放的是数值的指针, 因此更为灵活, 比如 python 中的 list, javascript 中的 array
传统意义上数组一般指存放类型相同的数据, 比如 javascript 中的 TypedArray, python 中的 array(import array), 一般在高性能计算中使用
数据类型长度
要注意, python3 和 javascript 中都是 unicode 类型, 内部是
utf-16
也就是说字符串
中文
的长度默认是 2 才对判断数据类型
dict 数据类型
比 Javascript 稍显繁琐
切片 slice
切片可以认为是一种索引的扩展, 也就是说切片支持各种索引数据结构
表达式
变量作用域
只有函数作用域, 没有块作用域, 没有声明提升
推荐使用更强大的
vars
, vars 无参数的时候和 locals 一样, 但还可以把 module 作为参数遍历一切的 for
需要有 key 和 value
使用
enumerate
运算符
大部分和 c, javascript 相同
没有
++
和--
哪些值是 false
其中只有
'0'
是 True, 其他都是 False, 专门测试字符串0是因为 PHP可以归纳出对于可迭代对象, 如果是空则为 False, 非空就是 True
而 javascript 中对象只要是非空对象都是 True
没有隐式类型转换
没有隐式类型转换
展开运算符
*args
相当于...args
变量查找顺序
locals
->enclosing function
->global
->__builtins__
enclosing function 可以理解为 closure 闭包
内置函数与变量
能看到全部的内置函数和变量, 美滋滋, 比如 eval, id, len 函数, 以及各种
__xx__
的变量等闭包
Python 处理 JSON
错误处理
迭代器协议
只需要
__iter__()
和next()
两个方法就可以自助一个可迭代类, 以后会单独写一篇文章有一个标准库 itertools, 看着就像一个简版 lodash
生成器协议
以后会单独写一篇文章
描述符协议
get
set
delete
以后会单独写一篇文章
上下文管理协议
英文名 Context Management Protocol
__enter__
__exit__
以后会单独写一篇文章
python2 和 python3
写出兼容 python2 和 python3 兼容的代码是很容易的, 因为 python3 很多是比 python2 更严格了
print
是函数3 / 2 = 1.5
python3 终于正常了, 不再是整除了包依赖与包管理
pip 相当于 npm
生成包依赖
pip freeze > requirements.txt
安装包依赖
要注意, pip3 是指 python3 对应的 pip, 而不是 pip version 3
SQLALCHEMY
Python 中的 ORM
编码规范
几乎都用 PEP8 规范
比如 google 的 https://github.com/google/yapf (star 8000+) 默认也是PEP8
pycharm 用的就是 PEP8
几个关键
网上有很多编码规范翻译的博客
https://www.cnblogs.com/ajianbeyourself/p/4377933.html
The text was updated successfully, but these errors were encountered: