python基礎(chǔ)(下)

一慌烧、多線程

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()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市或颊,隨后出現(xiàn)的幾起案子砸紊,更是在濱河造成了極大的恐慌,老刑警劉巖囱挑,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醉顽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡平挑,警方通過(guò)查閱死者的電腦和手機(jī)徽鼎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弹惦,“玉大人否淤,你說(shuō)我怎么就攤上這事√囊” “怎么了石抡?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)助泽。 經(jīng)常有香客問我啰扛,道長(zhǎng),這世上最難降的妖魔是什么嗡贺? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任隐解,我火速辦了婚禮,結(jié)果婚禮上诫睬,老公的妹妹穿的比我還像新娘煞茫。我一直安慰自己,他們只是感情好摄凡,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布续徽。 她就那樣靜靜地躺著,像睡著了一般亲澡。 火紅的嫁衣襯著肌膚如雪钦扭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天床绪,我揣著相機(jī)與錄音客情,去河邊找鬼其弊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛膀斋,可吹牛的內(nèi)容都是我干的梭伐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼概页,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼籽御!你這毒婦竟也來(lái)了练慕?” 一聲冷哼從身側(cè)響起惰匙,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铃将,沒想到半個(gè)月后项鬼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡劲阎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年绘盟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悯仙。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡龄毡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锡垄,到底是詐尸還是另有隱情沦零,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布货岭,位于F島的核電站路操,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏千贯。R本人自食惡果不足惜屯仗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搔谴。 院中可真熱鬧魁袜,春花似錦、人聲如沸敦第。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)申尼。三九已至垮卓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間师幕,已是汗流浹背粟按。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工诬滩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人灭将。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓疼鸟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親庙曙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子空镜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360