开始准备

调起你的胃口

如果你常玩计算机, 你就会发现有很多事情都可以自动化完成, 比如文本内容的搜索替换, 重命名许多图片文件。 可能你就想写一个小型定制的数据库或者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__)

results matching ""

    No results matching ""