python 基础入门

安装

  • python -V

命令

  • ctrl + d 退出

语法

  • 大小写敏感
  • #注释

字面常量

如:’cat’, 1

  • 整数: 1
  • 长整数: 84848484747
  • 浮点数:3.23,52.3E-4
  • 复数:-5+4j

字符串

  • 单引: ‘’
  • 双引: “”
  • 三引: ‘’’
  • 转义: \
  • 自然字符串:某些不需要如转义符那样的特别处理的字符串,用r或R标识,如:r:”kdkfjjkd\n”
  • unicode: 字符串前面加u/U
  • help(str)

变量

  • 命名:和其他语言一样
  • 声明:不需要声明和定义数据类型

运算符和表达式

  • 和其他语言基本一样
  • 特殊:
    1. // :取整除的商
    2. not, and, or

控制流

  • if:
1
2
3
4
5
6
if condition:
do something
elseif condition2:
do something
else
do something
  • while:

    1
    2
    3
    while condition:
    do something
    else:
  • for

    1
    2
    3
    for i in range(1, 5):
    do something
    else:
  • break

  • continue

函数

  • 声明:

    1
    2
    def func_name(params):
    do something
  • 调用:

    1
    func_name(args)
  • 形参

  • 局部变量:要使用全局变量,必须使用global 语句
  • 默认参数:和delphi一样,在声明时候,用等号赋值给参数
  • 关键参数:只想指定其中的一部分,那么你可以通过命名来为这些参数赋值

    1
    2
    func(25, c=24)
    func(c=50, a=100)
  • return:没有返回值的return语句等价于return None。None是Python中表示没有任何东西的特殊类型。例如,如果一个变量的值为None,可以表示它没有值。

  • DocStrings: python 对象都有 __doc__ 这个属性,print 可直接打印

模块

  • 命令:
    1. import
    2. from … import …
    3. import … as … (别名)
  • 访问:module_name.xxx
  • .pyc: 字节编译的模块文件
  • __name__: 通过模块的name属性,可以在程序本身被使用的时候运行主块,而在它被别的模块import的时候不运行主块。

标准库模块

  • sys

    1. argv
    2. path
  • os

    1. os.name 字符串指示你正在使用的平台。比如对于Windows,它是’nt’,而对于Linux/Unix用户,它是’posix’
    2. os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径
    3. os.getenv()和os.putenv()函数分别用来读取和设置环境变量
    4. os.listdir()返回指定目录下的所有文件和目录名
    5. os.remove()函数用来删除一个文件
    6. os.system()函数用来运行shell命令
    7. os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’
    8. os.path.split()函数返回一个路径的目录名和文件名
    9. os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.existe()函数用来检验给出的路径是否真地存在

创建模块

1
2
3
4
5
6
7
8
9
#!/usr/bin/python
# Filename: mymodule.py

def sayhi():
print 'Hi, this is mymodule speaking.'

version = '0.1'

# End of mymodule.py

dir()

  • 列出模块定义的标识符,标识符有函数、类和变量

数据结构

  • 列表,元组,字符串都是序列,支持索引,切片

列表

  • 可变
  • 定义:list = [1,3,4]
  • 常用:len(list), list.append(xx), list.sort(), del list[0], help(list)

元组

  • 不可变
  • 定义:tuple = (‘a1’, ‘b1’, ‘c1’)
  • 单元组:single_tuple = (‘11’, )
  • 常用:打印时,多个值,格式化输出

字典

  • dict类实例
  • 使用不可变的对象(比如字符串)来作为字典的键,可以用不可变或可变的对象作为字典的值
  • 无序
  • 定义:dict = {‘a’:1,’b’:2}
  • 访问:dict[‘a’]
  • 常用:
    1
    2
    for key, value in dict.items():
    do something

面向对象

  • self: 对象的实例
  • 类定义:

    1
    2
    class ClassName:
    ...
  • 创建对象: instance = ClassName()

  • 对象方法,参数都要有self,

    1
    def func_name(self, ...):
  • 特殊方法:

    1. __init__(): 类似构造函数的作用
    2. __del__(): 类似释构函数,可以用del 显式调用
  • 变量:

    1. 类变量:相当于java的静态变量
    2. 对象变量:仅仅对象拥有
  • 继承:
    Python不会自动调用基本类的constructor,你得亲自专门调用它

    1
    2
    3
    4
    class Child(Father):
    # 想继承,需要显式调用父类的方法
    def __init__(self, name, age, marks):
    Father.__init__(self, name, age)
  • 多重继承:入参添加多个基类

I/O

终端输入输出

  • raw_input
  • print

文件

  • 类:file
  • 方法:read,readline,write,close
    *

异常

  • 捕获:基本为Exception/Error

    1
    2
    3
    4
    5
    try:

    expect ErrorName:

    expect ExceptionName, exception_instance:
  • 抛出:

    1
    rasise ExceptionClass()
  • try … finally:

    1
    2
    3
    try:

    finally:

高级内容

特殊方法

名称说明
init(self,…)这个方法在新建对象恰好要被返回使用之前被调用。
del(self)恰好在对象要被删除之前调用。
str(self)在我们对对象使用print语句或是使用str()的时候调用。
lt(self,other)当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。
getitem(self,key)使用x[key]索引操作符的时候调用。
len(self)对序列对象使用内建的len()函数的时候调用。

字典或元组入参

使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用和*前缀,如:

1
def powersum(power, *args):

lambda

lambda语句用来创建函数对象。本质上,lambda需要一个参数,后面仅跟单个表达式作为函数体,而表达式的值被这个新建的函数返回。注意,即便是print语句也不能用在lambda形式中,只能使用表达式。

exec和eval语句

  • exec语句用来执行储存在字符串或文件中的Python语句
  • eval语句用来计算存储在字符串中的有效Python表达式

assert

用来声明某个条件是真的,失败的时候,会引发一个AssertionError

repr函数

用来取得对象的规范字符串表示,和反引号用来获取对象的可打印的表示形式,通过定义类的repr方法来控制你的对象在被repr函数调用的时候返回的内容