python入门教程
- 廖雪峰Python教程
- OSSU-Python For Everybody
- Python官方Tutorial
- Python编程快速上手-让繁琐工作自动化
- OSSU-Introduction-to-computer-science-and-programming-in-python-fall-2016
- 返回函数不要引用任何循环变量,或者后续会发生变化的变量。
- 对外层变量赋值前,需要先使用nonlocal声明该变量不是当前函数的局部变量。
- 必填参数(位置参数)
- 默认参数, 有默认值
- 可变参数
- 关键字参数
def param(req_param, def_param='123', *param, **kwargs):
"""
req_param: 必填参数
def_param: 默认参数
*param: 可变参数
**kwargs: 关键字参数
"""
and continue finally is raise
as def for lambda return
assert del from None True
async elif global nonlocal try
await else if not while
break except import or with
class False in pass yield
数据类型为序列的有: string, tuple, list, range
以上4种数据比较见下图:
string, 实际上是character的array.
python支持索引为负数, 从-1开始计数, 表示倒数第一个
word = 'Python'
# word[0] = P, word[-1] = n
字符串切片, 相当于java的string.split.
对于一个字符串s,索引i:
- 总是有
s[:i] + s[i:] = s
s[i:j]
的字符长度 =j-i
- 索引越界的index
j
,s[j]
会报IndexError - python string slice,会自动处理索引越界问题, 所以
s[:j]
不会报IndexError - slice索引有默认值, 省略的第一个索引默认为0, 省略的第二个索引默认为the end of string
- string在python中,和java类似(final修饰),string in python也是不可修改(immutable-不可变对象)
字典, 与java中map一样
结构:
- k-v序列队(key-value pairs)
- 用大括号(curly braces)包裹整个序列队
字典key的数据类型必须满足的2个必要条件:
- 必须实现
__hash__
方法, 用于计算key的hash值 - 必须实现
__eq__
方法, 用于比较key的hash值是否一致
so: 所有不可变的序列都可以作为dict key, 所有可变的序列都不可以作为dict key
结构如: if True/False do something elif True/False (optional) do something else True/False (optional) do something
结构如: for i in collection: do something
用处: iterate over a sequence of numbers range class有3个属性:
- start: int, 起始, 非必填
- stop: int, 终止, 必填
- step: int, 迭代步长, 非必填
指定当前python文件编码格式: