数据类型
1,整数
2,浮点数
3,字符串
\ 转义符:\n表示换行,\t表示制表符,\\表示的字符就是\
r'字符串':字符串默认不转义
'''...''':格式表示多行内容
4,布尔值:True ,False
5,空值:None
6,list(列表):有序的集合,可以随时添加和删除其中的元素。[1,2,3]
7,tuple(元组):与list一样,但是初始化后不能添加修改。(1,2,3)
8,dict(字典):{"a":1,"b":2}
9,set:类似dict,但不存储value
set([1, 2, 3])等于{1, 2, 3}
变量
值可以是任意数据类型,变量名必须是大小写英文、数字和_的组合,且不能用数字开头
常量
习惯上通常用全部大写的变量名表示常量,值不应该被改变
运算符
and、or、not
/:除法,结果为浮点数
//:整除,即使除不尽结果也是整数
判断
#if语句
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
循环
#for循环
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
#while循环
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
list:(列表)
list是一种有序的集合,可以随时添加和删除其中的元素。
可以用负数倒序索引。
len()函数可以获得list元素的个数
['Michael', 'Bob', 'Tracy']
方法
[].append('Adam');#添加到list末尾
[].insert(i, 'Jack');#添加 'Jack'到索引为i的位置
[].pop();#删除最后一个元素
[].pop(i);#删除指定位置i的元素
len([]);返回list长度
tuple:(元组)
tuple和list非常类似,但是tuple一旦初始化就不能修改;tuple的每个元素,
#指向#
永远不变(如果其中一个元素为列表list,可以修改这个list的元素),
定义一个空的tuple,可以写成()
,
只有1个元素的tuple定义时必须加一个逗号(1,)
没有append(),insert()这样的方法;
('Michael', 'Bob', 'Tracy')
dict:(字典:对象)
dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85};
方法:
d['Thomas'], #key不存在的错误
'Thomas' in d; #判断d是否存在'Thomas'
d.get('Thomas');
d.get('Thomas', -1);
#dict的get方法,如果key不存在,返回None,或者自己指定的value
d.pop('Bob'); #删除key 'Bob'
set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
s = set([1, 2, 3])
显示:{1, 2, 3}
方法:
s.add(4); #可以重复添加,但没效果
s.remove(4);#删除元素
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2; #数学交集:{2, 3}
>>> s1 | s2; #数学并集:{1, 2, 3, 4}
list对比dict
和list比较,dict有以下几个特点:
1,查找和插入的速度极快,不会随着key的增加而变慢;
2,需要占用大量的内存,内存浪费多。
函数
定义一个函数要使用def语句
def f(x):
return x * x
f(1)
匿名函数
关键字lambda
表示匿名函数,冒号前面的x表示函数参数。
只能有一个表达式,不用写return
f=lambda x: x * x
# 相当于
def f(x):
return x * x
装饰器
import functools
def log(fn):
@functools.wraps(fn)
def wrapper(*args,**kw): # 获取所有传入的参数
print(fn.__name__);
return fn(*args,**kw);
return wrapper
@log
def now():
print("1995")
#相当于:now = log(now)
now();
# now
# 1995
print(now.__name__); #如果不使用functools,这行结果为wrapper