Python Basic

Posted by Gavin Zhang on 16 Mar 2018 Categories: python Tags: python

Table of Content

Python 基础

标识符

  • _单下划线:弱“内部使用”标识。对于“from M import *”,将不导入所有以下划线开头的对象,包括包、模块、成员。
  • 单下划线结尾_:为了避免与python关键字的命名冲突
  • __双下划线开头:模块内的成员,表示私有成员,外部无法直接调用
  • __双下划线开头双下划线结尾__:指那些包含在用户无法控制的命名空间中的“魔术”对象或属性,如类成员的name 、doc、init、import、file、等。推荐永远不要将这样的命名方式应用于自己的变量或函数。

变量

Python 变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

例子:

 counter = 100 # 赋值整型变量
 miles = 1000.0 # 浮点型
 name = "John" # 字符串

 print counter
 print miles
 print name

多个变量赋值:

  • Python允许你同时为多个变量赋值。例如:
a = b = c = 1

以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。

  • 也可以为多个变量指定多个值。例如:
 a, b, c = 1, 2, "john"

以上实例,两个整型对象1和2的分配给变量a和b,字符串对象”john”分配给变量c。

变量作用域

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

  • 全局变量
    • 如果在函数内声明了同名变量,那么该变量是局部变量。如果要在函数内修改全局变量,需先声明: global [variable]。
  • 局部变量

示例:

total = 0; # This is global variable.
def sum( arg1, arg2 ):
    # global total # 去掉本行注释,则声明这里的 total 是全局变量
    total = arg1 + arg2; # 这里的 total 是局部变量.
    print "Inside the function local total : ", total
    return total;

sum( 10, 20 );
print "Outside the function global total : ", total

数据类型

Python数字类型转换

函数 返回值
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串

控制语句

  • if-elif-else
  • try-except-finally
  • pass 不执行任何操作
  • raise 抛出异常
  • import 语句
    • from module import name
    • import module as name
    • from module import name as anothername

运算符

  • 逻辑运算符:and,or,not 表示逻辑与,或,非.
  • 成员运算符:in, not in
  • 身份运算符:is, is not, 判断两个标识符是不是引用自一个对象

集合

  • list - [], 列表可修改。
  • tuple - (), 元组不能修改(当元组只包含一个元素时,需要在元素后面添加逗号, 如(50,))。
  • dict or map - {k1: v1, k2: v2}。
  • set - {‘Tom’, ‘Gavin’},创建空集合必须使用 set() 而不是 {},因为 {} 是创建空字典。集合支持的运算符(-, ,&,^)。
  • list slice - nums[2:5]。

表达式

  • y if z else x
  • [x + 3 for x in range(4)]

函数

参数:

  • 默认参数
  • 可变参数 - *args, 表示这是由多个实参组成的可变参数,该形参视作tuple数据类型;
  • 可变参数 - **kwargs, 表示这是由多个实参组成的可变参数,该形参视作dict数据类型;

Note:

函数的缺省参数值在连续多次调用该函数时,如果不被实参值覆盖,就会一直保留。例如:

def f(a, L=[]):
    L.append(a)
    return L

print(f(1))
print(f(2))
print(f(3))

结果为:

[1]
[1, 2]
[1, 2, 3]

面向对象

定义:

class Fish(object)
    def eat(self, food):
        print("eating %s" % food);

self 是约定俗成的写法,也可以使用如 myself。

使用:

#构造Fish的实例:
f=Fish()
#以下两种调用形式是等价的:
Fish.eat(f, "earthworm")
f.eat("earthworm")

module and package

  • module(模块):

    模块就是一个保存了Python代码的文件。文件名去掉.py 后缀就是模块名。
    在模块内通过 global variable name 访问模块名。

  • package(包):

    包是一个分层次的文件目录结构。
    通过目录中包含 __init__.py 文件,将包与普通目录区分开来的。

I/O

  • File 对象: file 对象提供了操作文件内容的一系列方法。
  • OS 对象: 提供了处理文件及目录的一系列方法。

References