线程简介

每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。

指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存。

  • 线程可以被抢占(中断)。
  • 在其他线程正在运行时,线程可以暂时搁置(也称为睡眠) – 这就是线程的退让。

线程可以分为:

  • 内核线程:由操作系统内核创建和撤销。
  • 用户线程:不需要内核支持而在用户程序中实现的线程。

Python3 线程中常用的两个模块为:

  • _thread
  • threading(推荐使用)
阅读全文 »

Python 数学模块

  • math 提供了对 C 标准定义的数学函数的访问(不适用于复数)
  • cmath 提供了一些关于复数的数学函数
  • decimal 为快速正确舍入的十进制浮点运算提供支持
  • fractions 为分数运算提供支持
  • random 实现各种分布的伪随机数生成器
  • statistics 提供了用于计算数字数据的数理统计量的函数

比较常用的模块:mathdecimalrandom

阅读全文 »

os模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os

# 返回当前的工作目录
print(os.getcwd())

# 修改当前的工作目录
os.chdir('/server/accesslogs')

# 执行系统命令 mkdir
os.system('mkdir today')

# 显示所有模块,方法
dir(os)

# 显示帮助
help(os)
阅读全文 »

在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法 “在变量前添加单个星号或两个星号”,实现多参数的传入或变量的拆解。

* 该位置接受任意多个非关键字(non-keyword)参数,在函数中将其转化为元组(1,2,3,4)

** 该位置接受任意多个关键字(keyword)参数,在函数 ** 位置上转化为字典 [key:value, key:value]

阅读全文 »

装饰器(Decorators)是 Python 的一个重要部分。简单地说:装饰器是修改其他函数的功能的函数。

一切皆对象

首先我们来理解下 Python 中的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def hi(name="Python"):
return "hi " + name

print(hi())
# output: 'hi Python'

# 可以将一个函数赋值给一个变量
# # 注意没有 使用小括号,并不是在调用hi函数
greet = hi

print(greet())
# output: 'hi Python'

# 删掉旧的hi函数
del hi
print(hi())
#outputs: NameError

print(greet())
#outputs: 'hi Python'
阅读全文 »

命名空间

  • 内置名称(built-in names), Python 语言内置的名称,比如函数名 abs、char 和异常名称 BaseException、Exception 等等。
  • 全局名称(global names),模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。
  • 局部名称(local names),函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量。(类中定义的也是)

types_namespace-1.png

阅读全文 »

面向对象三大特性

封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高复用性和安全性。

继承:一个类继承一个基类便可拥有基类的属性和方法,可提高代码的复用性。

多态:父类定义的引用变量可以指向子类的实例对象,提高了程序的拓展性。

Python面向对象简介

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 方法:类中定义的函数。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟 是一个(is-a) 关系。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
阅读全文 »

常用函数

os.getcwd()

查看当前路径。

1
2
import os
print(os.getcwd())

os.listdir(path)

返回指定目录下包含的文件和目录名列表。

1
2
import os
print(os.listdir('D:/'))
阅读全文 »
0%