datetime模块

其实就是date和time 模块的结合, 常见的属性方法都比较常用
比如:
datetime.day,datetime.month,datetime.year 分别表示一个datetime对象的日,月,年

1
2
3
4
5
6
7
8
from datetime import datetime
dt=datetime.now() #创建一个datetime类对象
print dt.year,dt.month,dt.day

'''
输出为:
2019 8 1
'''

strftime()函数

strftime() 用来格式化datetime 对象, 有时候会十分的方便:
先看一下格式: datetime.strftime(‘%’ ) %后面跟一个控制字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from datetime import datetime
dt = datetime.now()
print '时间:(%Y-%m-%d %H:%M:%S %f): ' , dt.strftime( '%Y-%m-%d %H:%M:%S %f' )
print '时间:(%Y-%m-%d %H:%M:%S %p): ' , dt.strftime( '%y-%m-%d %I:%M:%S %p' )
print '星期缩写%%a: %s ' % dt.strftime( '%a' )
print '星期全拼%%A: %s ' % dt.strftime( '%A' )
print '月份缩写%%b: %s ' % dt.strftime( '%b' )
print '月份全批%%B: %s ' % dt.strftime( '%B' )
print '日期时间%%c: %s ' % dt.strftime( '%c' )
print '今天是这周的第%s天 ' % dt.strftime( '%w' )
print '今天是今年的第%s天 ' % dt.strftime( '%j' )
print '今周是今年的第%s周 ' % dt.strftime( '%U' )
print '今天是当月的第%s天 ' % dt.strftime( '%d' )

'''
输出如下:
--------------------------------------------------------------
时间:(%Y-%m-%d %H:%M:%S %f): 2019-08-01 19:49:49 347018
时间:(%Y-%m-%d %H:%M:%S %p): 19-08-01 07:49:49 PM
星期缩写%a: Thu
星期全拼%A: Thursday
月份缩写%b: Aug
月份全批%B: August
日期时间%c: Thu Aug 1 19:49:49 2019
今天是这周的第4天
今天是今年的第213天
今周是今年的第30周
今天是当月的第01天
---------------------------------------------------
'''

Calendar模块

获取月历日历

1
2
3
4
5
6
7
8
9
>>> import calendar
>>> print calendar.month(2019, 8)
August 2019
Mo Tu We Th Fr Sa Su
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

可更改(mutable)与不可更改(immutable)对象

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

不定长参数

一个函数能处理比当初声明时更多的参数

声明

1
2
3
4
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return;

# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );

# 输出
输出:
10
输出:
70
60
50

os 模块操作文件和目录

重命名和删除文件

Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。

os.rename()

1
2
3
4
import os

# 重命名文件test1.txt到test2.txt。
os.rename( "test1.txt", "test2.txt" )

os.remove()

1
2
3
4
import os

# 删除一个已经存在的文件test2.txt
os.remove("test2.txt")

目录操作

mkdir() 创建目录

使用os模块的mkdir()方法在当前目录下创建新的目录

1
2
3
4
import os

# 创建目录test
os.mkdir("test")

chdir() 切换目录

用chdir()方法来改变当前的目录

1
2
3
4
5
6
7
import os

# getcwd() 获取当前目录
print os.getcwd()

# 将当前目录改为"/home/newdir"
os.chdir("/home/newdir")

rmdir() 删除目录

rmdir()方法删除目录,目录名称以参数传递。

在删除这个目录之前,它的所有内容应该先被清除。

1
2
3
4
import os

# 删除”/tmp/test”目录
os.rmdir( "/tmp/test" )

Python 类属性与方法

类的私有属性

private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.private_attrs。

类的方法

在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数

类的私有方法

private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用 self.private_methods


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

class JustCounter:
__secretCount = 0 # 私有变量
publicCount = 0 # 公开变量

def count(self):
self.__secretCount += 1
self.publicCount += 1
print self.__secretCount

counter = JustCounter()
counter.count()
counter.count()
print counter.publicCount
print counter.__secretCount # 报错,实例不能访问私有变量

输出:

1
2
3
4
5
6
7
1
2
2
Traceback (most recent call last):
File "test.py", line 17, in <module>
print counter.__secretCount # 报错,实例不能访问私有变量
AttributeError: JustCounter instance has no attribute '__secretCount'

访问私有属性

Python不允许实例化的类访问私有数据,但你可以使用 object._className__attrName( 对象名._类名__私有属性名 )访问属性

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

class private_var:
__site = "访问私有属性成功"

my_var = private_var()
print my_var._private_var__site

# 输出:
访问私有属性成功

单下划线、双下划线、头尾双下划线区别

  • __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。

  • _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

  • __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。