Python 随记
Python 程序入口
有时候我们会看到
1 | if __name__ == '__main__': |
这个语句中, __name__
是当前模块名,当模块被直接运行时模块名为 __main__
。
这句话的意思就是,当模块被直接运行时,dosomething()
块将被运行,当模块是被导入时,dosomething()
块不被运行。
-m 参数
python xxx.py
与 python -m xxx.py
,这两种运行 Python 程序的方式的不同点在于,一种是直接运行,一种是当做模块来运行。
- 直接运行的时候,xxx.py 所在目录是 sys.path
- 以模块运行的时候,当前工作路径是 sys.path
直接参数
有时候我们用命令行运行 python 程序,如:
1 | python test.py jerry 20 |
这里的 jerry 和 20 都是参数,在 python 里面用 sys 模块来获取参数:
1 | import sys |
参考:
python 3.6 print新特性: Formatted string literals
使用 %
在 python 3.6 之前,我们想 print , 一般是用 %
符号
1 | name = "jerry" |
使用 {}
在 python 3.6 可以用 {} ,类似于 kotlin 语法
- 注意: 引号前面有个
f
1 | name = "jerry" |
可以在 {} 里运算
1 | width = 10 |
输出:12.34 (4位有效数字)
参考
获取输入参数
用 sys.argv[] 来获取输入参数
myinfo.py
1 | import sys |
终端输入
1 | $ python3 myinfo.py jerry 18 |
终端输出
1 | $ my name is jerry, and I am 18 years old |
- myinfo.py 本身是一个参数, 即 argv[0]
- jerry 是argv[1]
- 18 是argv[2]
- 注意: 输入参数都是 string 类型, 这里的 18 其实是字符串18,不是数字18,可以用
int(sys.agrv[2])
转换成数字18
切片(Slice)操作
有一个 List
1 | L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] |
切片操作
1 | # 取出前3个元素 |
倒数切片
1 | # 取出-2(包含)到0(不包含) |
还可以每隔两个数取一个
1 | # 下标为0(包含)到10(不包含) |
如果看到下面这种操作,表示所有数每隔5个取一个
1 | L[::5] |
tuple
tuple 是另一种有序列表,中文叫元组。它也可以切片操作,操作结果仍为 tuple。 tuple 跟 list 的区别在于一旦初始化便不可更改。
看一个 tuple 例子
1 | 'a', 'b', ['A', 'B']) t = ( |
在这个例子中, t[0] 表示 tuple 的第一个元素,也就是 'a'
, t[1] 表示 'b'
, t[2]表示 ['A', 'B']
连接数据库
1 | import pymysql |