目录
Python基础
1. 变量
2. 语句
3. 列表
4. 元组
5. 字典
6. 函数
n. 强调
空列表、空元组不为None
python 中,类型属于对象,变量是没有类型的
总结
a = 1
允许同时为多个变量赋值a = b = c = 1
为多个对象指定多个变量a, b, c = 1, 2, 'john'
删除del a,b
运算符** 幂(a**b 即 a的b次幂)
// 取整除(返回商的整数部分)
in 包含在内(a in list 即 变量a在list中)
not in 不包含在内(a not in list 即 变量a不在list中)
is 有相同标识
is not 没有相同标识
代码样例:
a = 'hello world' if 'or' in a: print("a contain 'or'")Python2
a = raw_input() 输入自动转化为字符串类型
a = input() a的类型与输入类型一致
Python3
a = input() 输入自动转化为字符串类型
print区别Python2 print a
Python3 print(a)
以上输出自动换行,如下为输出不换行:
Python2 print a,
Python3 print(a, end='')
字符串的输出:
print("My name is %s and weight is %d kg!" % ('Zara', 21))My name is Zara and weight is 21 kg!
注释# 注释一行
``` 注释多行
条件语句代码样例:
a = 0 if a == 3: print('a') elif 1 < a < 10 or a == 0: print('b') else: print('c') 循环语句while循环代码样例:
count = 0 while count < 5: count = count + 1 else: print(count, " is not less than 5")for循环代码样例:
for num in range(10, 15): print('a') else: print('b')Python中没有do...while循环
注意事项:
1)while和for中,else语句会在循环正常执行完执行
2)while循环和for循环可以嵌套
3)range(start, stop, step) 从start(默认是0)开始到stop(必须有)结束,但不包括stop,步长为step(默认是1)
range(0, 10, 3)即[0, 3, 6, 9]
break、continue、passbreak 跳出最小封闭for或while循环
continue 跳过当前循环的剩余语句,继续下一轮循环
pass 不做任何事情,为了保持程序结构的完整性
['physics', 'chemistry', 1997, 2000]
[头下表:尾下表]截取相应的字符串或列表(字符串、元组同理)从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头
A B C D
0 1 2 3
-4 -3 -2 -1
从头取到尾,但不包括尾。没有尾则默认取到结尾
代码样例:
a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] print(a[1:5]) print(a[4:]) print(a[:2])运行结果:
['b', 'c', 'd', 'e']
['e', 'f', 'g']
添加元素尾部添加 a.append(element)
在index+1添加元素 a.insert(index, element)
删除元素删除元素 del a[index]
删除尾部数据 a.pop(index)
删除第一个指定的值 a.remove(value)
a = ('a', )
元组与列表相似,但元组的元素不能修改若元组中包含列表,则列表中的元素可更改样例代码:
a = ('a', 'b', ['c', 'd'], 'e', 'f', 'g') print(a) a[2][1] = 'z' print(a)运行结果:
('a', 'b', ['c', 'd'], 'e', 'f', 'g') ('a', 'b', ['c', 'z'], 'e', 'f', 'g')
d = {key1: value1,key2: value2}
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住代码样例:
a = dict() a['name'] = 'aaa' a['age'] = 12 for key, value in a.items(): print(key, ':', value) print(a) del a['age'] print(a)运行结果:
name : aaa age : 12 {'name': 'aaa', 'age': 12} {'name': 'aaa'}
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a(如 整数、字符串、元组)
可变类型:变量赋值 a=[1,2,3,4] 后再赋值 a[2]=5 则是将a的第三个元素值更改,本身a没有动,只是其内部的一部分值被修改了(如 列表、字典)
代码样例 1:
def ChangeInt(b): b = 10 b = 2 ChangeInt(b) print(b)运行结果:
2
代码样例 2:
def change(list): list.append([1, 2, 3, 4]) print("函数内取值: ", list) return list = [10, 20, 30] change(list) print("函数外取值: ", list)运行结果:
函数内取值: [10, 20, 30, [1, 2, 3, 4]] 函数外取值: [10, 20, 30, [1, 2, 3, 4]]
元素或列表和字典传递参数代码样例:
def f(a=0, *args, **kw): print(a) print(args) print(kw) a = [1, 2, 3] d = {'name': 'aaa', 'age': 12} f(*a, **d)运行结果:
1 (2, 3) {'name': 'aaa', 'age': 12}
全局变量和局部变量代码样例:
total = 0 def sum(arg1, arg2): total = arg1 + arg2 print("函数内是局部变量 : ", total) return total sum(10, 20) print("函数外是全局变量 : ", total)运行结果:
函数内是局部变量 : 30 函数外是全局变量 : 0
代码样例:
a = [] b = () c = None print('a: %s' % type(a)) print('b: %s' % type(b)) print('c: %s' % type(c)) if a is None: print('a is null') else: print('a is not null') if b is None: print('b is null') else: print('b is not null') if c is None: print('c is null') else: print('c is not null')运行结果:
a: <class 'list'> b: <class 'tuple'> c: <class 'NoneType'> a is not null b is not null c is null
None相当于空指针,是不分配内存空间的,而[]已经分配了列表的内存空间,只不过列表内存空间为空,()同理
代码样例:
a = 3 b = 3 print(id(a)) print(id(b)) a = [1, 2] b = [1, 2] print(id(a)) print(id(b)) a = "12" b = "12" print(id(a)) print(id(b))运行结果:
140713555920608 140713555920608 1987407465280 1987407464448 1987406285040 1987406285040
通过id()函数取出变量地址。由此可见,Python中的整数、字符串一直是同一个地址,是不变的,变得只有变量名,变量名就像一个指向固定地址的指针,而列表是可变的,新建的列表会分配新的地址
这其中仍有许多需要注意的细节,我也只是对我需要用到的部分做一些整理
参考资料:Python菜鸟教程
