一慌烧、多線程
import time, datetime
import threading
print("start of program...")
def test():
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
"Action: sleep..")
time.sleep(5)
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
"Action:wake up")
threadObj = threading.Thread(target=test)
threadObj.start()
print("Enf of program")
---
start of program...
2018-01-17 17:22:21 Action: sleep..
Enf of program
2018-01-17 17:22:26 Action:wake up
向線程的目標(biāo)函數(shù)中傳遞參數(shù)
>>> import threading
>>> threadObj = threading.Thread(target=print,args=['Cats','Dogs','Frogs'],kwargs={'sep':'&'})
>>> threadObj.start()
Cats&Dogs&Frogs
從python中啟動(dòng)其他的程序
from subprocess import Popen
Popen(r"C:\Program Files\Sublime Text 3\sublime_text.exe")
二炫乓、類的簡(jiǎn)單使用
1.基礎(chǔ)類
class Dog():
def __init__(self, age, name):
self.age = age
self.name = name
def DescribeDog(self):
print("My Dog's name is %s and now it is %s years old." %
(self.name.title(), self.age))
MyDog = Dog("1", "dahuang")
MyDog.DescribeDog()
-----
My Dog's name is Dahuang and now it is 1 years old.
2.父類冀墨、子類及類的調(diào)用
# ================================1.car 的父類================================
class Car():
def __init__(self, make, model, years):
"""make:生產(chǎn)商闸衫,model:型號(hào),years:生產(chǎn)年限"""
self.make = make
self.model = model
self.years = years
self.odometer_reading = 0 # 設(shè)置一個(gè)參數(shù)诽嘉,汽車跑的總里程數(shù)蔚出,初始值為0,無(wú)需外界傳入
def get_descriptive_name(self):
long_name = str(self.years) + ',' + self.model + ',' + self.make
return long_name.title()
def read_odometer(self):
# self.odometer_reading = 23
print("this car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, newmiles):
"""
將里程表讀數(shù)設(shè)定為指定的值
禁止將里程表的讀數(shù)往回?fù)? """
# self.odometer_reading = newmiles
if self.odometer_reading <= newmiles:
self.odometer_reading = newmiles
else:
print("you can not rollback an old meter !")
# ======================2.子類的創(chuàng)建======================================
# 創(chuàng)建子類時(shí)虫腋,父類必須包含在當(dāng)前文件中身冬,且位于子類前面
# 創(chuàng)建子類的實(shí)例時(shí),Python首先需要完成的任務(wù)是給父類的所有屬性賦值
# super()是一個(gè)特殊函數(shù)岔乔,幫助Python將父類和子類關(guān)聯(lián)起來(lái)
# =========================================================================
class ElectricCar(Car): # 括號(hào)中object表示從哪里繼承父類
def __init__(self, make, model, years):
super().__init__(make, model, years) # 繼承父類的屬性(其中的方法)酥筝,與Python2 版本中寫法不一樣
self.battery = Battery(66) # 調(diào)用Battery類
def read_odometer(self):
"""重寫父類的方法:在子類中定義一個(gè)與要重寫的父類方法同名。這樣雏门,Python就不會(huì)繼承這個(gè)父類方法"""
print("elc car not need read miles.")
# ============================3.將實(shí)例用作屬性==================================
# 將類的一部分作為一個(gè)獨(dú)立的類提取出來(lái)嘿歌,可以將大型類拆分成多個(gè)協(xié)同工作的小類
# 如下方的Battery實(shí)例可以用作ElectricCar類的一個(gè)屬性
# ==============================================================================
class Battery():
def __init__(self, battery_size=100):
"""初始化電池的容量"""
self.battery_size = battery_size
def describe_battery(self):
"""描述電池剩余量"""
print("this electriccar has a " + str(self.battery_size) + " -kWh battery.")
my_car = Car('benci', 'hhhh', 2017)
elc_car = ElectricCar('aodi', 'yy', 2018)
print(my_car.get_descriptive_name())
print(elc_car.get_descriptive_name())
elc_car.read_odometer()
# my_car.odometer_reading = 50
my_car.update_odometer(50)
my_car.read_odometer()
elc_car.battery.describe_battery() # 調(diào)用3中的battery類
三、JSON 對(duì)象
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式茁影,易于人閱讀和編寫宙帝。
- json.dumps 將 Python 對(duì)象編碼成 JSON 字符串
- json.loads 將已編碼的 JSON 字符串解碼為 Python 對(duì)象
Note: json.dumps()與json.dump()的區(qū)別在于
json.dumps()
用于將dict類型的數(shù)據(jù)轉(zhuǎn)成str,json.dump()
用于將dict類型的數(shù)據(jù)轉(zhuǎn)成str,并寫入到j(luò)son文件中,同理,json.loads()是用于將str類型的數(shù)據(jù)轉(zhuǎn)成dict, json.load()用于從json文件中讀取數(shù)據(jù)募闲。
python 原始類型向 json 類型的轉(zhuǎn)化對(duì)照表.png
Eg1:json.dumps()和json.loads()的簡(jiǎn)單應(yīng)用舉例
import json
data = {'a': '1111', 'b': '2222', 'c': '3333', 'd': '4444'}
jsDumps = json.dumps(data)
jsLoads = json.loads(jsDumps)
print(data, type(data), jsDumps, type(jsDumps), jsLoads, type(jsLoads), sep='\n')
---
{'c': '3333', 'b': '2222', 'd': '4444', 'a': '1111'}
<class 'dict'>
{"c": "3333", "b": "2222", "d": "4444", "a": "1111"}
<class 'str'>
{'c': '3333', 'b': '2222', 'd': '4444', 'a': '1111'}
<class 'dict'>
# 如果想要數(shù)據(jù)展示的美觀點(diǎn)步脓,可以添加點(diǎn)其他參數(shù)如縮進(jìn),排序等
print(json.dumps(data, sort_keys=True, indent=4, separators=(',', ':')))
-----
{
"a":"1111",
"b":"2222",
"c":"3333",
"d":"4444"
}
Eg2: json.load()和json.dump()的應(yīng)用舉例。
#!/usr/bin/env python
# coding=utf-8
"""
文檔的功能:把用戶名字記錄到j(luò)son文件中靴患,當(dāng)用戶第二次打開時(shí)仍侥,檢測(cè)到j(luò)son文件中有該內(nèi)容,就會(huì)直接將json文件中的內(nèi)容反饋給用戶。
"""
import json
def get_stored_username():
"""如果存儲(chǔ)了用戶名鸳君,就獲取它"""
filename = 'username.json'
try:
with open(filename) as f_obj:
username = json.load(f_obj)
except FileNotFoundError:
return None
except ValueError:
return None
else:
return username
def get_new_username():
"""提示用戶輸入用戶名"""
filename = 'username.json'
username = input("What is your name? ")
with open(filename, 'w') as f_obj:
json.dump(username, f_obj)
return username
def Welcome_user():
"""問候用戶农渊,并指出其名字"""
username = get_stored_username()
if username:
print("Welcome back, " + username + "!")
else:
username = get_new_username()
print("We'll remember you when you come back, " + username + "!")
Welcome_user()