开始准备
调起你的胃口
如果你常玩计算机, 你就会发现有很多事情都可以自动化完成, 比如文本内容的搜索替换, 重命名许多图片文件。 可能你就想写一个小型定制的数据库或者GUI应用,或者小游戏等。 如果你是一个专业软件开发, 你可能得跟好几个c/c++/java库打交道,但这些写作-编译-测试-重编译的周期太慢了。
python就是干这个事的。
你可以写shell脚本来做这些事,但是shell擅长在文件操作和改变文本。不能写GUI或者游戏。如果用c++/Java, 开发周期太长。 而python简单,各种平台都可以用,可以快速完成工作。
Python用起来简单,但它是一个真正的编程语言, 提供了很多支持大型程序的结构和支持。
Python把程序化成很多可以重用的模块。标准模块可以作为你程序的基础, 其他模块提供文件io,系统调用,sockets,以及图形用户接口如Tk。
Python是解释性语言, 没有编译和链接,省了很多开发阶段的时间。解释器交互运行可以体验语言的各种特性。写了就扔的程序也好, 测试程序也好, 同时还是一个桌面计算器。
Python紧凑,可读性好,因为高级数据类型可以在单个陈述中表达复杂的操作,而且变量不需要声明,没有大括号。
Python可以扩展, 如果你会C,为解释器新增一个内置函数或者模块都很容易。比如最快的速度做关键的操作,或者调用第三方的某个二进制形式的图形库。
使用解释器
参数传递
当解释器得到参数, 脚本名和参数就变成了字符串列表并分配给sys模块的argv变量. 列表长度至少1. 如果不写脚本名,argv[0]就是空串,如果脚本名字为-
(表示标准输入),argv[0]就是-
,如果是-c
,argv[0]就是-c
, 如果是-m
, argv[0]就是模块的全名. -c
命令,-m
模块之后的选项不被解释器处理,留在argv给命令或者模块来处理。
源代码编码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
计算器
操作符+
,-
,*
,/
,//
,%
,**
- 除总返回浮点数
- 交互模式
_
变量代表上一个返回值
字符串
用法
''
和""
等价,\
转义.用print函数,可以让字符串可读性好,能读出转义字符,特殊字符,以及去掉首尾的引号。- 如果不要
\
被转义成特殊字符,在'
前面加上r
, 如print(r'C:\some\name')
- 如果字符串跨多行,用
'''
或者"""
- 操作符有
*
,+
,空格
, 比如3 * 'un' + 'ium'
,文本之间的空格自动连接。 - 下标写法。
word=python
,word[0], word[0:2],word[:2], word[2:0], word[-1], word[-2:],len(word)
,
List
list是mutable对象,list[0]可以赋值。
函数缺省值
下例保留了函数状态值
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
放弃状态值
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
函数注解
函数注解作为dictionary存储在__annotation__
属性中,
def f(ham: str, eggs: str = 'eggs') -> str:
print("Annotations:", f.__annotations__)
print("Arguments:", ham, eggs)
return ham + ' and ' + eggs
f('spam')
文档字符串
如果有多行,第二行空出来 挨着第一行后的非空行,缩进代表整个文档的缩进 后续行若有相同的缩进,则空格被删除。
def my_function():
"""Do nothing, but document it.
No, really, it doesn't do anything.
"""
pass
print(my_function.__doc__)