code description dict.clear() 删除字典 del dict 删除字典 tupleDemo = (); 创建空元祖 tupleDemo = (27,); 元组中只包含一个元素时,需要在元素后面添加逗号 关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符 多行注释用三个单引号(’)或者三个双引号(”)将注释括起来 num=int(input(“输入一个数字:”)) 输入一个数转成数字
list=[1 ,2 ,3 ,4 ]
it = iter(list)
for x in it:
print (x, end=" " )
print('{0} 和 {1}' .format('Google' , 'Runoob' ))
Google 和 Runoob
>>> table = {'Google' : 1 , 'Runoob' : 2 , 'Taobao' : 3 }
>>> print('Runoob: {Runoob:d}; Google: {Google:d}; Taobao: {Taobao:d}' .format(**table))
Runoob: 2 ; Google: 1 ; Taobao: 3
table = {'google' :'best' ,'baidu' :'good' }
print(table.get('google' ))
import os
def start () :
print('测试开始' )
os.system('cp {} 8.py' .format('5.py' ))
print('测试结束' )
if __name__ == "__main__" :
start()
for line in open("myfile.txt" ):
print(line, end="" )
以上这段代码的问题是,当执行完毕后,文件会保持打开状态,并没有被关闭。
with open("myfile.txt" ) as f:
for line in f:
print(line, end="" )
以上这段代码执行完毕后,就算在处理过程中出问题了,文件 f 总是会关闭
class people :
name = ''
age = 0
__weight = 0
def __init__ (self,n,a,w) :
self.name = n
self.age = a
self.__weight = w
def speak (self) :
print("%s 说: 我 %d 岁。" %(self.name,self.age))
p = people('runoob' ,10 ,30 )
p.speak()
执行以上程序输出结果为:
runoob 说: 我 10 岁。
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 16 , in <module>
print (counter.__secretCount)
AttributeError: 'JustCounter' object has no attribute '__secretCount'
import os
os.getcwd()
os.system('mkdir today' )
import shutil
shutil.copyfile('10.py' ,'101.py' )
shutil.move('8.py' ,'file1' )
通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。例如在命令行中执行 "python demo.py one two three" 后可以得到以下输出结果:
>>> import sys
>>> print(sys.argv)
['demo.py' , 'one' , 'two' , 'three' ]
>>> import random
>>> random.choice(['apple' , 'pear' , 'banana' ])
'apple'
>>> random.sample(range(100 ), 10 )
[30 , 83 , 16 , 4 , 8 , 81 , 41 , 50 , 18 , 33 ]
>>> random.random()
0.17970987693706186
>>> random.randrange(6 )
4
1. 日期转字符串
import datetime
now = datetime.datetime.now()
now.strftime('%Y-%m-%d %H:%M:%S' )
输出
'2015-04-07 19:11:21'
2. 字符串转时间
import datetime
t_str = '2015-04-07 19:11:21'
d = datetime.datetime.strptime(t_str, '%Y-%m-%d %H:%M:%S' )
3. 计算两个日期字符串相隔的天数
import datetime
d1 = datetime.datetime.strptime('2015-03-05 17:41:20' , '%Y-%m-%d %H:%M:%S' )
d2 = datetime.datetime.strptime('2015-03-02 17:41:20' , '%Y-%m-%d %H:%M:%S' )
delta = d1 - d2
print delta.days
4. 当前日期加三天,最后以字符串输出
import datetime
now = datetime.datetime.now()
delta = datetime.timedelta(days=3 )
n_days = now + delta
print n_days.strftime('%Y-%m-%d %H:%M:%S' )
输出:
2015 -04 -10 19 :16 :34
计算每个月天数
以下代码通过导入 calendar 模块来计算每个月的天数:
import calendar
monthRange = calendar.monthrange(2016 ,9 )
print(monthRange)
执行以上代码输出结果为:
(3 , 30 )
输出的是一个元组,第一个元素是所查月份的第一天对应的是星期几(0 -6 ),第二个元素是这个月的天数。以上实例输出的意思为 2016 年 9 月份的第一天是星期四,该月总共有 30 天
以下代码通过导入 datetime 模块来获取昨天的日期:
import datetime
def getYesterday () :
today=datetime.date.today()
oneday=datetime.timedelta(days=1 )
yesterday=today-oneday
return yesterday
print(getYesterday())
执行以上代码输出结果为:
2015 -06 -10
以上实例输出的意思为昨天的日期是 2015 年 6 月 10 日
dictionary中的解析
>>> params = {"server" :"mpilgrim" , "database" :"master" , "uid" :"sa" , "pwd" :"secret" }
>>> params.keys()
['server' , 'uid' , 'database' , 'pwd' ]
>>> params.values()
['mpilgrim' , 'sa' , 'master' , 'secret' ]
>>> params.items()
[('server' , 'mpilgrim' ), ('uid' , 'sa' ), ('database' , 'master' ), ('pwd' , 'secret' )]
>>> [k for k, v in params.items()]
['server' , 'uid' , 'database' , 'pwd' ]
>>> [v for k, v in params.items()]
['mpilgrim' , 'sa' , 'master' , 'secret' ]
>>> ["%s=%s" % (k, v) for k, v in params.items()]
['server=mpilgrim' , 'uid=sa' , 'database=master' , 'pwd=secret' ]
import re
line = "Cats are smarter than dogs" ;
searchObj = re.search( r'(.*) are (.*?) .*' , line, re.M|re.I)
if searchObj:
print ("searchObj.group() : " , searchObj.group())
print ("searchObj.group(1) : " , searchObj.group(1 ))
print ("searchObj.group(2) : " , searchObj.group(2 ))
else :
print ("Nothing found!!" )
以上实例执行结果如下:
searchObj.group() : Cats are smarter than dogs
searchObj.group(1 ) : Cats
searchObj.group(2 ) : smarter
re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None ;而re.search匹配整个字符串,直到找到一个匹配。
实例:
import re
line = "Cats are smarter than dogs" ;
matchObj = re.match( r'dogs' , line, re.M|re.I)
if matchObj:
print ("match --> matchObj.group() : " , matchObj.group())
else :
print ("No match!!" )
matchObj = re.search( r'dogs' , line, re.M|re.I)
if matchObj:
print ("search --> matchObj.group() : " , matchObj.group())
else :
print ("No match!!" ) 以上实例运行结果如下:
No match!!
search --> matchObj.group() : dogs
import re
phone = "2004-959-559 # 这是一个电话号码"
num = re.sub(r'#.*$' , "" , phone)
print ("电话号码 : " , num)
num = re.sub(r'\D' , "" , phone)
print ("电话号码 : " , num) 以上实例执行结果如下:
电话号码 : 2004 -959 -559
电话号码 : 2004959559
多线程和线程同步
import threading
import time
class myThread (threading.Thread) :
def __init__ (self, threadID, name, counter) :
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run (self) :
print ("开启线程: " + self.name)
threadLock.acquire()
print_time(self.name, self.counter, 3 )
threadLock.release()
def print_time (threadName, delay, counter) :
while counter:
time.sleep(delay)
print ("%s: %s" % (threadName, time.ctime(time.time())))
counter -= 1
threadLock = threading.Lock()
threads = []
thread1 = myThread(1 , "Thread-1" , 1 )
thread2 = myThread(2 , "Thread-2" , 2 )
thread1.start()
thread2.start()
threads.append(thread1)
threads.append(thread2)
for t in threads:
t.join()
print ("退出主线程" )
执行以上程序,输出结果为:
开启线程: Thread-1
开启线程: Thread-2
Thread-1 : Wed Apr 6 11 :52 :57 2016
Thread-1 : Wed Apr 6 11 :52 :58 2016
Thread-1 : Wed Apr 6 11 :52 :59 2016
Thread-2 : Wed Apr 6 11 :53 :01 2016
Thread-2 : Wed Apr 6 11 :53 :03 2016
Thread-2 : Wed Apr 6 11 :53 :05 2016
退出主线程
线程优先级队列( Queue)
import queue
import threading
import time
exitFlag = 0
class myThread (threading.Thread) :
def __init__ (self, threadID, name, q) :
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.q = q
def run (self) :
print ("开启线程:" + self.name)
process_data(self.name, self.q)
print ("退出线程:" + self.name)
def process_data (threadName, q) :
while not exitFlag:
queueLock.acquire()
if not workQueue.empty():
data = q.get()
queueLock.release()
print ("%s processing %s" % (threadName, data))
else :
queueLock.release()
time.sleep(1 )
threadList = ["Thread-1" , "Thread-2" , "Thread-3" ]
nameList = ["One" , "Two" , "Three" , "Four" , "Five" ]
queueLock = threading.Lock()
workQueue = queue.Queue(10 )
threads = []
threadID = 1
for tName in threadList:
thread = myThread(threadID, tName, workQueue)
thread.start()
threads.append(thread)
threadID += 1
queueLock.acquire()
for word in nameList:
workQueue.put(word)
queueLock.release()
while not workQueue.empty():
pass
exitFlag = 1
for t in threads:
t.join()
print ("退出主线程" )
以上程序执行结果:
开启线程:Thread-1
开启线程:Thread-2
开启线程:Thread-3
Thread-3 processing One
Thread-1 processing Two
Thread-2 processing Three
Thread-3 processing Four
Thread-1 processing Five
退出线程:Thread-3
退出线程:Thread-2
退出线程:Thread-1
退出主线程