从C过渡到Python! - 适合有一定编程基础的同学
1 Python 标准数据类型
Python中所有的变量都是对象
python一切皆对象,这与以往的语言区别较大,由于所有的变量都是对象,
所有的赋值操作也都是指针赋值,所以必须区分可变和不可变类型。
数据类型一律使用小写
a = 3
b = a
print(id(a))
print(id(b))
'''
地址相同
140704520279776
140704520279776
'''
可变和不可变
- 可变类型:本身可以被修改,修改前后是同一个对象
List
Set
Dictionary - 不可变类型:本身不允许被修改,而是让变量指向新的对象
Number
String
Tuple
Number
包括int、float、bool、complex(复数)
检验方式
type(1) == int
或
isinstance(1, int)
类型转换
int()、float()、complex()
需要注意的运算符
- 赋值
多个变量同时赋值
a,b,c = 1,2,3
a = b = 3
- 除法
5/2 # 2.5
5//2 # 2,运算结果向下取整
-
混合运算时,Python将整型转为浮点数,
-
bool 可以参与运算
甚至,bool可以不看做一种类型
True == 1
False == 0
string
单引号和双引号
Python没有字符类型,字符串使用单引号和双引号都可以,但是要注意单引号和双引号必须“交替嵌套”
字符串不可变
str[0] = 'a' 这样的操作是不合法的,要更新字符串,请进行字符串拼接
不转义 r
# 反斜杠不转义r的用法
print(r'this is \n') # this is \n
不换行输出的方法
print默认换行输出
print('hello', end='')
运算符
* 重复输出
in / not in 成员运算符
格式化(非首选)
注意字符串后面的百分号 %
age = 16
name = "Tim"
newstr = "age is %d, name is %s" % (age, name) #多个变量用括号括起来
f-string 格式化 (推荐)
使用:
字符串前加f,字符串中{}内可填入变量名或表达式
p1 = {
'name': 'Tim',
'age': 13
}
print(f'Name is {p1["name"]}, age is {p1["age"]}')
# print(f'Name is {p1['name']}, age is {p1['age']}') syntax error 注意引号
三引号(多行字符串)
三引号'''或"""可以包含多行字符串,其中可以使用换行符和Tab制表符
当字符串是一串SQL代码时,这会非常有用。
sequence 序列
序列就是 list 或 tuple
Python中的序列有两种:list 和 tuple
简单介绍这个概念,是因为下面有些内建函数的参数是序列。
list 列表
追加元素
+[]
表尾附加元素,并返回新的列表
list.append()
原地追加元素,一次仅能追加一个对象元素
list.extend()
将传入序列的元素追加到表尾
以下是两种list拷贝方法:
a = [1,2,3]
b = a[:]
b = a + []
切片(适用于字符串和序列)
即在切片操作中传入第三个参数
- 用于间隔索引
- 用于逆向读取,即当其为负数时,表示此时逆向读取
a = ['I','L','Y']
print(a[-1::-1]) # 等价于 a.reverse()
对支持切片的对象均适用,比如字符串
流程控制
与C、Java、Js等语言类似,只简述一些区别
- 没有大括号 {}
注意冒号和缩进 - if-elif-else
也即 else if -> elif - while-else
处理不满足循环条件时的情况
for循环
Python中的for循环是针对序列的,
语法为: for element_name in sequence: ... else:
else
for循环的else处理序列为空的情况。
range()
range()可以配合for循环遍历数字序列
range(n): 产生0~n-1的range序列
range(n,m): 产生n~m-1的序列
用法:
a = ['C','C#','C++','Python']
for i in range(len(a)):
print(i, a[i])
'''
0 C
1 C#
2 C++
3 Python
'''
运算符
只给出一些与其他语言不同的运算符
逻辑运算符
and : &&
or : ||
not : !
成员运算符
用于字符串及序列
A in B
A not in B
身份运算符
用于判断两个对象是否引用同一个存储单元
A is B
等同于 id(A) == id(B)
A is not B
id(A) != id(B)