热门
特性
- 提供了非常完善的基础代码库
- 还有大量的第三方库
- 注释
- 对缩进严格要求
- 大小写敏感
特点:简单优雅
输入输出:input,print
name = input('please enter your name: ')print('hello,', name)
数据类型和 变量
整数、浮点数、字符串、布尔值、空值 变量、常量
- 空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值
使用list和tuple
- Python内置的一种数据类型列表:list,可以随时添加和删除其中的元素
classmates = ['Michael', 'Bob', 'Tracy'] classmates ['Michael', 'Bob', 'Tracy']
用len()函数可以获得list元素的个数
len(classmates)
- 删除list末尾的元素,用pop()方法
- list元素也可以是另一个的list(类似是二维数组)
另一种有序列表叫做元组:tuple,tuple和list很类似,但是tuple一旦初始化后不能修改
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
可变?
t = ('a', 'b', ['A', 'B']) t[2][0] = 'X' t[2][1] = 'Y' t ('a', 'b', ['X', 'Y'])
条件判断
循环
使用dict和set
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值存储,具有极快的查询速度
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
d['Michael']
95
- 可以通过in判断key是否存在
- 通过dict提供的get方法,如果key不存在,可以返回none,或者自己指定的value
d.get('Thomas')
d.get('Thomas', -1)
-1
- 删除key,用pop(key)方法
- 牢记dict的key必须是不可变对象
set
set和dict类似,也是一组key的集合,但不存储value,在set中,没有重复的key
s = set([1, 2, 3])
s
{1, 2, 3}
- add(key)方法可以添加到set中
- remove(key)可以删除元素
- set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。
讨论不可变对象
上面提到的list是可变对象,对list进行操作,list内部内容是会发生变化的。但是对于不可变对象,比如
a = 'abc'
b = a.replace('a', 'A')
b'Abc
a
'abc'
实例
定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
- 空函数 pass 语句
- 参数检查
- 返回多个值
- 函数执行结束的时候没有return语句时,自动return None
函数参数
默认参数
可变参数
*args是可变参数,args接收的是一个tuple
关键字参数
**kw是关键字参数,kw接收的是一个dict
参数组合
可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));
关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})
使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法
解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。