datetime模块
其实就是date和time 模块的结合, 常见的属性方法都比较常用
比如:
datetime.day,datetime.month,datetime.year 分别表示一个datetime对象的日,月,年
from datetime import datetime
dt=datetime.now() #创建一个datetime类对象
print dt.year,dt.month,dt.day
'''
输出为:
2019 8 1
'''
strftime()函数
strftime() 用来格式化datetime 对象, 有时候会十分的方便:
先看一下格式: datetime.strftime(’%’ ) %后面跟一个控制字符
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模块
获取月历日历
>>> 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 等则是可以修改的对象。
不定长参数
一个函数能处理比当初声明时更多的参数
声明
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
实例
#!/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()
import os
# 重命名文件test1.txt到test2.txt。
os.rename( "test1.txt", "test2.txt" )
os.remove()
import os
# 删除一个已经存在的文件test2.txt
os.remove("test2.txt")
目录操作
mkdir() 创建目录
使用os模块的mkdir()方法在当前目录下创建新的目录
import os
# 创建目录test
os.mkdir("test")
chdir() 切换目录
用chdir()方法来改变当前的目录
import os
# getcwd() 获取当前目录
print os.getcwd()
# 将当前目录改为"/home/newdir"
os.chdir("/home/newdir")
rmdir() 删除目录
rmdir()方法删除目录,目录名称以参数传递。
在删除这个目录之前,它的所有内容应该先被清除。
import os
# 删除”/tmp/test”目录
os.rmdir( "/tmp/test" )
Python 类属性与方法
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
类的方法
在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用 self.__private_methods
#!/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
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( 对象名._类名__私有属性名 )访问属性
#!/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)的变量, 只能是允许这个类本身进行访问了。