一、Python dir()函数:运行python shell窗口(通过开始-〉所有程序-〉python3.5-〉运行IDLE启动python shell窗口);

1、查询所有函数:dir(__builtins__)

2、查看具体函数语法及说明(举例说明)help(input)

二、for循环i值修改for i in range(10)  ,你可以在for循环体中修改i的值,但每次循环之后for语句又会重新对i赋值,所以改了也没用;如果想改i值,可以用while,或者,用个生成器

 

三、常用方法,函数:

1、三引号字符串不赋值的情况下,通常当作跨行注释使用

2、列表中添加单个元素:list1.append('test1')    //append()方法是将参数作为一个元素增加到列表的末尾

3、列表中添加多个元素:list1.extend(['test2','test2'])  //extend()方法则是将参数作为一个列表去扩展列表的末尾

4、列表中按位置插入元素:list1.insert(0,'我是第一位') //在第一位置插入

5、列表前面几个元素表示:列表[:3] ,访问后面几个元素:列表[3:] 

6、列表元素排序:列表名.reverse()反转、列表名.sort(reverse=True)倒序排序列表名.sort()正序排序、sorted可以获取排序后的列表

7、随机读取列表元素

#使用python random模块的choice方法随机选择某个元素
foo = ['a', 'b', 'c', 'd', 'e']
from random import choice
print choice(foo)

#使用python random模块的sample函数从列表中随机选择一组元素
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
slice = random.sample(list, 5)  #从list中随机获取5个元素,作为一个片断返回  
print slice  
print list #原有序列并没有改变。 


8、range生成的是列表list

      range(stop)  

      #注意:默认情况下,的起始值是0。例如range(5)等价于range(0, 5)

      range(start, stop[, step]) 

      #start开始,stop结束(但不包括end),step每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

9、copy() 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象 (list

        说明:浅拷贝 另一方法:新列表=列表[ : ]
        deepcopy() 深拷贝 拷贝对象及其子对象 (list

10、clear()  从列表中移除所有元素(list


#当我们希望内容不被轻易改写的时候,我们使用元组

11、元组插入元素(拼接插入)temp =(1,'',3,4,5,'');      temp =temp[:2]+('插入的字符串',)+temp[2:];

12、元组的拷贝:变量=元组[:]

13、元组的删除:del 元组

14、字符串切片:str1='I love you!'; str1[:6]

15、字符串拼接:str1='I love you!';str1=str1[:6]+' me'+str1[6:]; #字符串可以元组方式来操作

16、逐个读取字符串:for i in ‘acdefg’:


17、推导式:[有关A的表达式 for Ain B]      

         如: [i*i for i in range(10)]

[(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]

18、lambda 函数也叫匿名函数,即,函数没有具体的名称。lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。  lambda 函数不能包含命令,

包含的表达式不能超过一个。


19、map函数:根据提供的函数对指定序列做映射,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回,

map(func, *iterables) --> map object 


20、filter过滤函数:是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,

filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。:filter(function or None, iterable) --> filter object


22、python中变量作用域及嵌套作用域:Python 的变量名解析机制也称为 LEGB 法则,具体如下:当在函数中使用未确定的变量名时,Python 搜索 4 个作用域:

本地作用域(L),之后是上一层嵌套结构中 def 或 lambda 的本地作用域(E),之后是全局作用域(G),最后是内置作用域(B)。

按这个查找原则,在第一处找到的地方停止。如果没有找到,Python 会报错的。

python中变量的查找作用域优先级变为:局部、外部、全局和内建

global:关键字-可将函数中变量修改为全局变量,慎用

nonlocal:关键字-在嵌套函数中,可将内部函数变量改为外部函数的局部变量

23、python类内部调用自己的方法必须加self:
class tt:
    def fa(self):
        return 'aa'
    def fb(self):
        return self.fa()

24、函数加括号和不加括号的区别:

def a(x):
      def b(y):
           return x+y
      return b
print(a)
print(a(2))
print(a(2)(3))

a–>函数a的内存地址 
a(x) –>调用a方法,返回b函数对象相当于–>b 
a(x)(y)–>b(y)调用b方法返回x和y的值,这里x取的是a方法的参数值,y是b方法的参数值





四、字符串操作函数

capitalize()

把字符串的第一个字符改为大写

casefold()

把整个字符串的所有字符改为小写

center(width)

将字符串居中,并使用空格填充至长度 width的新字符串

count(sub[, start[, end]])

返回 sub在字符串里边出现的次数,start end参数表示范围,可选。

encode(encoding='utf-8', errors='strict')

encoding指定的编码格式对字符串进行编码。

endswith(sub[, start[, end]])

检查字符串是否以 sub子字符串结束,如果是返回 True,否则返回 Falsestart end 参数表示范围,可选。

expandtabs([tabsize=8])

把字符串中的 tab符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8

find(sub[, start[, end]])

检测 sub是否包含在字符串中,如果有则返回索引值,否则返回 -1start end 参数表示范围,可选。

index(sub[, start[, end]])

find方法一样,不过如果 sub不在 string中会产生一个异常。

isalnum()

如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

isalpha()

如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False

isdecimal()

如果字符串只包含十进制数字则返回 True,否则返回 False

isdigit()

如果字符串只包含数字则返回 True,否则返回 False

islower()

如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False

isnumeric()

如果字符串中只包含数字字符,则返回 True,否则返回 False

isspace()

如果字符串中只包含空格,则返回 True,否则返回 False

istitle()

如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False

isupper()

如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False

join(sub)

以字符串作为分隔符,插入到 sub中所有的字符之间。

ljust(width)

返回一个左对齐的字符串,并使用空格填充至长度为 width的新字符串。

lower()

转换字符串中所有大写字符为小写。

lstrip()

去掉字符串左边的所有空格

partition(sub)

找到子字符串 sub,把字符串分成一个 3元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub则返回 ('原字符串', '', '')

replace(old, new[, count])

把字符串中的 old子字符串替换成 new子字符串,如果 count指定,则替换不超过 count次。

rfind(sub[, start[, end]])

类似于 find()方法,不过是从右边开始查找。

rindex(sub[, start[, end]])

类似于 index()方法,不过是从右边开始。

rjust(width)

返回一个右对齐的字符串,并使用空格填充至长度为 width的新字符串。

rpartition(sub)

类似于 partition()方法,不过是从右边开始查找。

rstrip()

删除字符串末尾的空格。

split(sep=None, maxsplit=-1)

不带参数默认是以空格为分隔符切片字符串,如果 maxsplit参数有设置,则仅分隔 maxsplit个子字符串,返回切片后的子字符串拼接的列表。

splitlines(([keepends]))

按照 '\n'分隔,返回一个包含各行作为元素的列表,如果 keepends参数指定,则返回前 keepends行。

startswith(prefix[, start[, end]])

检查字符串是否以 prefix开头,是则返回 True,否则返回 Falsestart end 参数可以指定范围检查,可选。

strip([chars])

删除字符串前边和后边所有的空格,chars参数可以定制删除的字符,可选。

swapcase()

翻转字符串中的大小写。

title()

返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。

translate(table)

根据 table的规则(可以由 str.maketrans('a', 'b')定制)转换字符串中的字符。

upper()

转换字符串中的所有小写字符为大写。

zfill(width)

返回长度为 width的字符串,原字符串右对齐,前边用 0填充。

 

五、字符串格式化及转义

字符串格式化符号含义  

      

        

     %c

   格式化字符及其ASCII

     %s

   格式化字符串

     %d

   格式化整数

     %o

   格式化无符号八进制数

     %x

   格式化无符号十六进制数

     %X

   格式化无符号十六进制数(大写)

     %f

   格式化定点数,可指定小数点后的精度

     %e

   用科学计数法格式化定点数

     %E

   作用同%e,用科学计数法格式化定点数

     %g

   根据值的大小决定使用%f%e

     %G

   作用同%g,根据值的大小决定使用%f或者%E

 格式化操作符辅助指令                                           

      

         

     m.n

    m是显示的最小总宽度,n是小数点后的位数

       -

    用于左对齐

      +

    在正数前面显示加号(+

       #

    在八进制数前面显示 '0o',在十六进制数前面显示 '0x'  '0X'

       0

    显示的数字前面填充 '0' 取代空格

字符串转义字符含义  

      

         

       \'

    单引号

       \"

    双引号

       \a

    发出系统响铃声

       \b

    退格符

       \n

    换行符

       \t

    横向制表符(TAB

       \v

    纵向制表符

       \r

    回车符

       \f

    换页符

       \o

    八进制数代表的字符

       \x

    十六进制数代表的字符

       \0

    表示一个空字符

       \\

    反斜杠

 

六、修改变量的作用域

1、函数中修改全局变量的值,可在函数中用global先申明变量,再对变量进行操作

2、内部函数修改上级函数变量的值,可在内部函数中用nonlocal先申明变量为不是局部,再对变量进行操作

七、匿名函数:lambda例如 lambda x,y:x+y

八、内置过滤器函数:filter(function or None, iterable) 0-9奇数list(filter(lambda x:x%2,range(10)))

       内置过滤器函数:map(function, *iterables)   09*list(map(lambdax:x*2,range(10)))

九、求阶乘:

def factorial():
    temp=1
    num=int(input('
请输一个数:'))
    for i in range(1,num+1):
        temp=temp*i
    return temp        
print(factorial())

十、文件操作

文件打开模式

打开模式

执行操作

'r'

以只读方式打开文件(默认)

'w'

以写入的方式打开文件,会覆盖已存在的文件

'x'

如果文件已经存在,使用此模式打开将引发异常

'a'

以写入模式打开,如果文件存在,则在末尾追加写入

'b'

以二进制模式打开文件

't'

以文本模式打开(默认)

'+'

可读写模式(可添加到其他模式中使用)

'U'

通用换行符支持

文件对象方法

文件对象方法

执行操作

f.close()

关闭文件

f.read([size=-1])

从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回

f.readline([size=-1])

从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符

f.write(str)

将字符串str写入文件

f.writelines(seq)

向文件写入字符串序列seqseq应该是一个返回字符串的可迭代对象

f.seek(offset, from)

在文件中移动文件指针,从from0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节

f.tell()

返回当前在文件中的位置

f.truncate([size=file.tell()])

截取文件到size个字节,默认是截取到文件指针当前位置



十一、osos.path模块中关于文件、目录常用的函数使用方法

os模块中关于文件/目录常用的函数使用方法

函数名

使用方法

getcwd()

返回当前工作目录

chdir(path)

改变工作目录

listdir(path='.')

列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)

mkdir(path)

创建单层目录,如该目录已存在抛出异常

makedirs(path)

递归创建多层目录,如该目录已存在抛出异常,注意:'E:\\a\\b''E:\\a\\c'并不会冲突

remove(path)

删除文件

rmdir(path)

删除单层目录,如该目录非空则抛出异常

removedirs(path)

递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常

rename(old, new)

将文件old重命名为new

system(command)

运行系统的shell命令

walk(top)

遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])【具体实现方案请看:第30讲课后作业^_^

以下是支持路径操作中常用到的一些定义,支持所有平台

os.curdir

指代当前目录('.'

os.pardir

指代上一级目录('..'

os.sep

输出操作系统特定的路径分隔符(Win下为'\\'Linux下为'/'

os.linesep

当前平台使用的行终止符(Win下为'\r\n'Linux下为'\n'

os.name

指代当前使用的操作系统(包括:'posix',  'nt', 'mac', 'os2', 'ce', 'Java'

 

os.path模块中关于路径常用的函数使用方法

函数名

使用方法

basename(path)

去掉目录路径,单独返回文件名

dirname(path)

去掉文件名,单独返回目录路径

join(path1[, path2[, ...]])

path1, path2各部分组合成一个路径名

split(path)

分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在

splitext(path)

分离文件名与扩展名,返回(f_name, f_extension)元组

getsize(file)

返回指定文件的尺寸,单位是字节

getatime(file)

返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()localtime()函数换算)

getctime(file)

返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()localtime()函数换算)

getmtime(file)

返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()localtime()函数换算)

以下为函数返回 True False

exists(path)

判断指定路径(目录或文件)是否存在

isabs(path)

判断指定路径是否为绝对路径

isdir(path)

判断指定路径是否存在且是一个目录

isfile(path)

判断指定路径是否存在且是一个文件

islink(path)

判断指定路径是否存在且是一个符号链接

ismount(path)

判断指定路径是否存在且是一个挂载点

samefile(path1, paht2)

判断path1path2两个路径是否指向同一个文件

 

十二、python异常总结

Python标准异常总结

AssertionError

断言语句(assert)失败

AttributeError

尝试访问未知的对象属性

EOFError

用户输入文件末尾标志EOFCtrl+d

FloatingPointError

浮点计算错误

GeneratorExit

generator.close()方法被调用的时候

ImportError

导入模块失败的时候

IndexError

索引超出序列的范围

KeyError

字典中查找一个不存在的关键字

KeyboardInterrupt

用户输入中断键(Ctrl+c

MemoryError

内存溢出(可通过删除对象释放内存)

NameError

尝试访问一个不存在的变量

NotImplementedError

尚未实现的方法

OSError

操作系统产生的异常(例如打开一个不存在的文件)

OverflowError

数值运算超出最大限制

ReferenceError

弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象

RuntimeError

一般的运行时错误

StopIteration

迭代器没有更多的值

SyntaxError

Python的语法错误

IndentationError

缩进错误

TabError

Tab和空格混合使用

SystemError

Python编译器系统错误

SystemExit

Python编译器进程被关闭

TypeError

不同类型间的无效操作

UnboundLocalError

访问一个未初始化的本地变量(NameError的子类)

UnicodeError

Unicode相关的错误(ValueError的子类)

UnicodeEncodeError

Unicode编码时的错误(UnicodeError的子类)

UnicodeDecodeError

Unicode解码时的错误(UnicodeError的子类)

UnicodeTranslateError

Unicode转换时的错误(UnicodeError的子类)

ValueError

传入无效的参数

ZeroDivisionError

除数为零


以下是 Python内置异常类的层次结构:
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
      +-- StopIteration
      +-- ArithmeticError
      |    +-- FloatingPointError
      |    +-- OverflowError
      |    +-- ZeroDivisionError
      +-- AssertionError
      +-- AttributeError
      +-- BufferError
      +-- EOFError
      +-- ImportError
      +-- LookupError
      |    +-- IndexError
      |    +-- KeyError
      +-- MemoryError
      +-- NameError
      |    +-- UnboundLocalError
      +-- OSError
      |    +-- BlockingIOError
      |    +-- ChildProcessError
      |    +-- ConnectionError
      |    |    +-- BrokenPipeError
      |    |    +--ConnectionAbortedError
      |    |   +--ConnectionRefusedError
      |    |    +--ConnectionResetError
      |    +-- FileExistsError
      |    +-- FileNotFoundError
      |    +-- InterruptedError
      |    +-- IsADirectoryError
      |    +-- NotADirectoryError
      |    +-- PermissionError
      |    +-- ProcessLookupError
      |    +-- TimeoutError
      +-- ReferenceError
      +-- RuntimeError
      |    +-- NotImplementedError
      +-- SyntaxError
      |    +-- IndentationError
      |         +-- TabError
      +-- SystemError
      +-- TypeError
      +-- ValueError
      |    +-- UnicodeError
      |        +--UnicodeDecodeError
      |        +--UnicodeEncodeError
      |        +--UnicodeTranslateError
      +-- Warning
           +-- DeprecationWarning
           +--PendingDeprecationWarning
           +-- RuntimeWarning
           +-- SyntaxWarning
           +-- UserWarning
           +-- FutureWarning
           +-- ImportWarning
           +-- UnicodeWarning
         +--BytesWarning
           +-- ResourceWarning

十三、python GUI

EasyGui 学习文档【超详细中文版】http://bbs.fishc.com/thread-46069-1-1.html

十四、Python魔法方法详解

魔法方法

含义

基本的魔法方法

__new__(cls[, ...])

1. __new__ 是在一个对象实例化的时候所调用的第一个方法
2.
它的第一个参数是这个类,其他的参数是用来直接传递给 __init__方法
3. __new__
决定是否要使用该 __init__方法,因为 __new__可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果 __new__没有返回实例对象,则 __init__不会被调用
4. __new__
主要是用于继承一个不可变的类型比如一个 tuple或者 string

__init__(self[, ...])

构造器,当一个实例被创建的时候调用的初始化方法

__del__(self)

析构器,当一个实例被销毁的时候调用的方法

__call__(self[, args...])

允许一个类的实例像函数一样被调用:x(a, b)调用 x.__call__(a, b)

__len__(self)

定义当被 len()调用时的行为

__repr__(self)

定义当被 repr()调用时的行为

__str__(self)

定义当被 str()调用时的行为

__bytes__(self)

定义当被 bytes()调用时的行为

__hash__(self)

定义当被 hash()调用时的行为

__bool__(self)

定义当被 bool()调用时的行为,应该返回 True False

__format__(self, format_spec)

定义当被 format()调用时的行为

有关属性

__getattr__(self, name)

定义当用户试图获取一个不存在的属性时的行为

__getattribute__(self, name)

定义当该类的属性被访问时的行为

__setattr__(self, name, value)

定义当一个属性被设置时的行为

__delattr__(self, name)

定义当一个属性被删除时的行为

__dir__(self)

定义当 dir()被调用时的行为

__get__(self, instance, owner)

定义当描述符的值被取得时的行为

__set__(self, instance, value)

定义当描述符的值被改变时的行为

__delete__(self, instance)

定义当描述符的值被删除时的行为

比较操作符

__lt__(self, other)

定义小于号的行为:x < y调用 x.__lt__(y)

__le__(self, other)

定义小于等于号的行为:x <= y调用 x.__le__(y)

__eq__(self, other)

定义等于号的行为:x == y调用 x.__eq__(y)

__ne__(self, other)

定义不等号的行为:x != y调用 x.__ne__(y)

__gt__(self, other)

定义大于号的行为:x > y调用 x.__gt__(y)

__ge__(self, other)

定义大于等于号的行为:x >= y调用 x.__ge__(y)

算数运算符

__add__(self, other)

定义加法的行为:+

__sub__(self, other)

定义减法的行为:-

__mul__(self, other)

定义乘法的行为:*

__truediv__(self, other)

定义真除法的行为:/

__floordiv__(self, other)

定义整数除法的行为://

__mod__(self, other)

定义取模算法的行为:%

__divmod__(self, other)

定义当被 divmod()调用时的行为

__pow__(self, other[, modulo])

定义当被 power()调用或 **运算时的行为

__lshift__(self, other)

定义按位左移位的行为:<<

__rshift__(self, other)

定义按位右移位的行为:>>

__and__(self, other)

定义按位与操作的行为:&

__xor__(self, other)

定义按位异或操作的行为:^

__or__(self, other)

定义按位或操作的行为:|

反运算

__radd__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rsub__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rmul__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rtruediv__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rfloordiv__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rmod__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rdivmod__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rpow__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rlshift__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rrshift__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rand__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__rxor__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

__ror__(self, other)

(与上方相同,当左操作数不支持相应的操作时被调用)

增量赋值运算

__iadd__(self, other)

定义赋值加法的行为:+=

__isub__(self, other)

定义赋值减法的行为:-=

__imul__(self, other)

定义赋值乘法的行为:*=

__itruediv__(self, other)

定义赋值真除法的行为:/=

__ifloordiv__(self, other)

定义赋值整数除法的行为://=

__imod__(self, other)

定义赋值取模算法的行为:%=

__ipow__(self, other[, modulo])

定义赋值幂运算的行为:**=

__ilshift__(self, other)

定义赋值按位左移位的行为:<<=

__irshift__(self, other)

定义赋值按位右移位的行为:>>=

__iand__(self, other)

定义赋值按位与操作的行为:&=

__ixor__(self, other)

定义赋值按位异或操作的行为:^=

__ior__(self, other)

定义赋值按位或操作的行为:|=

一元操作符

__pos__(self)

定义正号的行为:+x

__neg__(self)

定义负号的行为:-x

__abs__(self)

定义当被 abs()调用时的行为

__invert__(self)

定义按位求反的行为:~x

类型转换

__complex__(self)

定义当被 complex()调用时的行为(需要返回恰当的值)

__int__(self)

定义当被 int()调用时的行为(需要返回恰当的值)

__float__(self)

定义当被 float()调用时的行为(需要返回恰当的值)

__round__(self[, n])

定义当被 round()调用时的行为(需要返回恰当的值)

__index__(self)

1. 当对象是被应用在切片表达式中时,实现整形强制转换
2.
如果你定义了一个可能在切片时用到的定制的数值型,你应该定义 __index__
3.
如果 __index__被定义,则 __int__也需要被定义,且返回相同的值

上下文管理(with 语句)

__enter__(self)

1. 定义当使用 with语句时的初始化行为
2. __enter__
的返回值被 with语句的目标或者 as后的名字绑定

__exit__(self, exc_type, exc_value, traceback)

1. 定义当一个代码块被执行或者终止后上下文管理器应该做什么
2.
一般被用来处理异常,清除工作或者做一些代码块执行完毕之后的日常工作

容器类型

__len__(self)

定义当被 len()调用时的行为(返回容器中元素的个数)

__getitem__(self, key)

定义获取容器中指定元素的行为,相当于 self[key]

__setitem__(self, key, value)

定义设置容器中指定元素的行为,相当于 self[key] = value

__delitem__(self, key)

定义删除容器中指定元素的行为,相当于 del self[key]

__iter__(self)

定义当迭代容器中的元素的行为

__reversed__(self)

定义当被 reversed()调用时的行为

__contains__(self, item)

定义当使用成员测试运算符(in not in)时的行为



十五、time 模块详解(时间获取和转换)

 

time 模块 -- 时间获取和转换

time 模块提供各种时间相关的功能

Python 中,与时间处理有关的模块包括:time,datetime 以及 calendar
必要说明:

  • 虽然这个模块总是可用,但并非所有的功能都适用于各个平台。
  • 该模块中定义的大部分函数是调用 C 平台上的同名函数实现,所以各个平台上实现可能略有不同。

一些术语和约定的解释:

  • 时间戳(timestamp)的方式:通常来说,时间戳表示的是从 1970 年 1 月 1 日 00:00:00 开始按秒计算的偏移量(time.gmtime(0))此模块中的函数无法处理 1970 纪元年以前的日期和时间或太遥远的未来(处理极限取决于 C 函数库,对于 32 位系统来说,是 2038 年)
  • UTC(Coordinated Universal Time,世界协调时)也叫格林威治天文时间,是世界标准时间。在中国为 UTC+8
  • DST(Daylight Saving Time)即夏令时的意思
  • 一些实时函数的计算精度可能低于它们建议的值或参数,例如在大部分 Unix 系统,时钟一秒钟“滴答”50~100 次


时间元祖(time.struct_time):
gmtime(),localtime() 和 strptime() 以时间元祖(struct_time)的形式返回。

索引值(Index)

属性(Attribute)

值(Values)

0

tm_year(年)

(例如:2015)

1

tm_mon(月)

1 ~ 12

2

tm_mday(日)

1 ~ 31

3

tm_hour(时)

0 ~ 23

4

tm_min(分)

0 ~ 59

5

tm_sec(秒)

0 ~ 61(见下方注1)

6

tm_wday(星期几)

0 ~ 6(0 表示星期一)

7

tm_yday(一年中的第几天)

1 ~ 366

8

tm_isdst(是否为夏令时)

0, 1, -1(-1 代表夏令时)


注1:范围真的是 0 ~ 61(你没有看错哦^_^);60 代表闰秒,61 是基于历史原因保留。


time.altzone
返回格林威治西部的夏令时地区的偏移秒数;如果该地区在格林威治东部会返回负值(如西欧,包括英国);对夏令时启用地区才能使用。

time.asctime([t])
接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2015"(2015年12月11日 周二 18时07分14秒)的 24 个字符的字符串。


time.clock()
用以浮点数计算的秒数返回当前的 CPU 时间。用来衡量不同程序的耗时,比 time.time() 更有用。
Python 3.3 以后不被推荐,由于该方法依赖操作系统,建议使用 perf_counter() 或 process_time() 代替(一个返回系统运行时间,一个返回进程运行时间,请按照实际需求选择)

time.ctime([secs]) 
作用相当于 asctime(localtime(secs)),未给参数相当于 asctime()


time.gmtime([secs])
接收时间辍(1970 纪元年后经过的浮点秒数)并返回格林威治天文时间下的时间元组 t(注:t.tm_isdst 始终为 0)


time.daylight
如果夏令时被定义,则该值为非零。


time.localtime([secs])
接收时间辍(1970 纪元年后经过的浮点秒数)并返回当地时间下的时间元组 t(t.tm_isdst 可取 0 或 1,取决于当地当时是不是夏令时)

time.mktime(t)
接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)

time.perf_counter()
返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。


time.process_time()
返回当前进程执行 CPU 的时间总和,不包含睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。


time.sleep(secs)
推迟调用线程的运行,secs 的单位是秒。

time.strftime(format[, t]) 
把一个代表时间的元组或者 struct_time(如由 time.localtime() 和 time.gmtime() 返回)转化为格式化的时间字符串。如果 t 未指定,将传入 time.localtime()。如果元组中任何一个元素越界,将会抛出 ValueError 异常。

format 格式如下:

格式

含义

备注

%a

本地(locale)简化星期名称

%A

本地完整星期名称

%b

本地简化月份名称

%B

本地完整月份名称

%c

本地相应的日期和时间表示

%d

一个月中的第几天(01 - 31)

%H

一天中的第几个小时(24 小时制,00 - 23)

%l

一天中的第几个小时(12 小时制,01 - 12)

%j

一年中的第几天(001 - 366)

%m

月份(01 - 12)

%M

分钟数(00 - 59)

%p

本地 am 或者 pm 的相应符

注1

%S

秒(01 - 61)

注2

%U

一年中的星期数(00 - 53 星期天是一个星期的开始)第一个星期天之前的所有天数都放在第 0 周

注3

%w

一个星期中的第几天(0 - 6,0 是星期天)

注3

%W

和 %U 基本相同,不同的是 %W 以星期一为一个星期的开始

%x

本地相应日期

%X

本地相应时间

%y

去掉世纪的年份(00 - 99)

%Y

完整的年份

%z

用 +HHMM 或 -HHMM 表示距离格林威治的时区偏移(H 代表十进制的小时数,M 代表十进制的分钟数)

%Z

时区的名字(如果不存在为空字符)

%%

%号本身


注1:“%p”只有与“%I”配合使用才有效果。
注2:范围真的是 0 ~ 61(你没有看错哦^_^);60 代表闰秒,61 是基于历史原因保留。
注3:当使用 strptime() 函数时,只有当在这年中的周数和天数被确定的时候 %U 和 %W 才会被计算。


举个例子:

1.    # I love FishC.com!

2.    >>> import time as t

3.    >>> t.strftime("a, %d %b %Y%H:%M:%S +0000", t.gmtime())

4.    'a, 24 Aug 2014 14:15:03 +0000'

5.     

time.strptime(string[, format])
把一个格式化时间字符串转化为 struct_time。实际上它和 strftime() 是逆操作。

举个例子:

1.    # I really love FishC.com!

2.    >>> import time as t

3.    >>> t.strptime("30 Nov14", "%d %b %y")

4.    time.struct_time(tm_year=2014, tm_mon=11,tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=334, tm_isdst=-1)

复制代码



time.time()
返回当前时间的时间戳(1970 纪元年后经过的浮点秒数)

time.timezone
time.timezone 属性是当地时区(未启动夏令时)距离格林威治的偏移秒数(美洲 >0;大部分欧洲,亚洲,非洲 <= 0)

time.tzname
time.tzname 属性是包含两个字符串的元组:第一是当地非夏令时区的名称,第二个是当地的 DST 时区的名称。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐