学习通过 菜鸟教程:https://www.runoob.com/python3/python3-data-type.html
环境
运行python程序
与shell相似
- 使用python解析器解析python脚本:
python test.py
- 将python解析器放入/usr/bin直接运行脚本:
./test.py
- 启动python解析器,进行交互式编程:
python
查看 Python 版本
1 | python -V |
基础语法
标识符
_foo
的代表不能直接访问的类属性- 双下划线开头的
__foo
代表类的私有成员 - 双下划线开头和结尾的
__foo__
代表 Python 里特殊方法专用的标识,如__init__()
代表类的构造函数
行和缩进
不使用大括号 {}
,缩进来写模块,缩进的空白数量是可变,但是要一致
一语句多行
\
将一行的语句分为多行显示
1 | total = item_one + \ |
语句中包含 [], {} 或 () 括号就不需要使用多行连接符
1 | days = ['Monday', 'Tuesday', 'Wednesday', |
一行多语句
语句之间使用分号;
分割
1 | import sys; x = 'runoob'; sys.stdout.write(x + '\n') |
引号
'
、"
、三引号'''
或 """
来表示字符串,三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
1 | word = 'word' |
注释
单行注释采用 # 开头
1
2# 第一个注释
print ("Hello, Python!") # 第二个注释多行注释使用三个单引号
'''
或三个双引号"""
1
2
3
4
5"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
输入输出
- 输入 input
1 | a, b = input().split(" ") # 输入字符串(默认返回类型)a 和 b 以(空格)分隔 |
- 输出 print
1 | # 换行输出 |
多个语句构成代码组
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
1 | if expression : |
命令行参数
sys.argv
1 | import sys |
getopt
1 | # test.py -i <inputfile> -o <outputfile> |
运算符
算术运算符
**
:幂 - 返回x的y次幂//
:取整除 - 返回商的整数部分**=
、//=
:**
、//
对应的赋值操作:=
:可在表达式内部为变量赋值,if (n := len(a)) > 10:
逻辑运算符
and
、or
、not
:python 没有 && 、||、!,与之对应的用and
、or
、not
代替
成员运算符
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
- 身份运算符
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
控制语句
条件语句
1 | if num == 3: # 判断num的值 |
循环语句
支持break
,continue
while
1 | while (count < 9): |
for
1 | fruits = ['banana', 'apple', 'mango'] |
range()函数
生成数列,左开右闭,第三个参数为步长
1 | # range(1): 0 |
pass 语句
pass
不做任何事情,一般用做占位语句,即必须要有个语句,但又没有需要执行的指令时使用
1 | while True: |
函数与变量
1 | # 定义函数 |
变量
在 python 中,类型属于对象,对象有不同类型的区分,变量是没有类型的,仅仅是一个对象的引用(一个指针)
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了
函数参数
函数参数传递
- 不可变类型:类似 C++ 的值传递,如整数、字符串、元组。如 fun(a),传递的只是 a 的值,没有影响 a 对象本身。如果在 fun(a) 内部修改 a 的值,则是新生成一个 a 的对象。
- 可变类型:类似 C++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会受影响
关键字参数
默认参数
1 | def printinfo( name, age = 35 ): |
不定长参数
加了星号 * 的参数会以元组(tuple)的形式导入
加了两个星号 \ 的参数会以字典的形式导入
1 | #!/usr/bin/python3 |
错误与异常
异常捕获:try/except…else
1 | try: |
抛出异常 raise
1 | x = 10 |
自定义异常
1 | class MyError(Exception): |
预定义的清理行为与“with”关键
一些对象定义了标准的清理行为,可以理解为C++中析构函数
Python 中的 with 语句用于异常处理,封装了 try…except…finally 编码范式,使代码更清晰、更具可读性。下面两段代码等效
1 | with open("myfile.txt", 'w') as f: |
1 | file = open('myfile.txt', 'w') |