最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3中類、模塊、錯(cuò)誤與異常、文件的簡(jiǎn)易教程

 更新時(shí)間:2017年11月20日 14:17:31   作者:吳小龍同學(xué)  
這篇文章主要給大家介紹了關(guān)于Python3中類、模塊、錯(cuò)誤與異常、文件的相關(guān)教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

和舊版的Python 2.7教程相比,新增內(nèi)容包括:

  • 新增命名關(guān)鍵字參數(shù)的使用;
  • 新增StringIO和BytesIO;
  • 新增datetime的使用;
  • 新增urllib的使用;
  • 新增枚舉類型的使用;
  • 新增virtualenv的使用;
  • 新增asyncio編程;
  • 新增aiohttp編程;
  • 實(shí)戰(zhàn)的Web App已完全基于asyncio重寫。

本文將詳細(xì)給大家介紹Python3中類、模塊、錯(cuò)誤與異常、文件的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。


面向?qū)ο笤O(shè)計(jì)思想是 Class 抽象的,Instance 一個(gè)個(gè)具體的 Class,比如學(xué)生是抽象的 Class,而張三李四就是一個(gè)個(gè)具體學(xué)生。

定義

Class 大駝峰命名法。僅供內(nèi)部用的 Class,名稱前會(huì)加一個(gè)底線。

類定義一般格式:

class Student:
 pass
# 或者
class Developer(object):
 pass

object 表示該類是從哪個(gè)類繼承下來的,object 是最終的父類。

class Developer(object):
 # 定義類屬性
 name = 'WuXiaolong'
 site = 'http://wuxiaolong.me/'
 # 變量名兩個(gè)下劃線開頭,定義私有屬性, 這樣在類外部無法直接進(jìn)行訪問,類的私有方法也是如此
 __sex = 0
 # 定義構(gòu)造方法
 def __init__(self, name, site, sex):
 self.name = name
 self.site = site
 self.__sex = sex
 # 類方法
 def get_sex(self):
 return self.__sex
 def set_sex(self, sex):
 self.__sex = sex
# 調(diào)用:
if __name__ == '__main__':
 # 實(shí)例化類
 developer = Developer('wxl', 'http://wuxiaolong.me/', 1) # 實(shí)例化成變量
 print(developer.site, developer.get_sex()) # 訪問類的屬性和方法

注意:以單下劃線開頭的表示的是 protected 類型的變量或方法,即保護(hù)類型,只能允許其本身與子類進(jìn)行訪問,不能用于 from module import *。

單繼承

class Developer(object):
 # 定義類屬性
 name = 'WuXiaolong'
 site = 'http://wuxiaolong.me/'
 # 變量名兩個(gè)下劃線開頭,定義私有屬性, 這樣在類外部無法直接進(jìn)行訪問,類的私有方法也是如此
 __sex = 0
 # 定義構(gòu)造方法
 def __init__(self, name, site, sex):
 self.name = name
 self.site = site
 self.__sex = sex
 # 類方法
 def get_sex(self):
 return self.__sex
 def set_sex(self, sex):
 self.__sex = sex
# 單繼承
class AndroidCoder(Developer):
 coder_id = 1024
 # 定義構(gòu)造方法
 def __init__(self, name, site, sex, coder_id):
 # 調(diào)用父類構(gòu)造方法
 # Developer.__init__(self, name, site, sex) # 老辦法
 super(AndroidCoder, self).__init__(name, site, sex) # 采用新式
 self.coder_id = coder_id
 # 重寫父類的方法
 def set_sex(self, sex):
 self.__sex = sex
 print('這是個(gè)秘密')
 def get_sex(self):
 return self.__sex
# 調(diào)用:
if __name__ == '__main__':
 # 單繼承
 androidCoder = AndroidCoder('wxl', 'http://wuxiaolong.me/', 1, 520)
 print(androidCoder.set_sex(2))

注意:super 繼承,要求最頂層的父類一定要繼承于object,這樣就可以利用 super() 函數(shù)來調(diào)用父類的 init() 等函數(shù)。

多繼承

B 繼承 A,C 繼承 B

以上面的單繼承為例,AndroidCoder 繼承了 Developer,現(xiàn)在讓 PythonCoder 繼承 AndroidCoder:

# 多繼承,B 繼承 A,C 繼承 B
class PythonCoder(AndroidCoder):
 # 定義構(gòu)造方法
 def __init__(self, name, site, sex, coder_id):
 # 調(diào)用父類構(gòu)造方法
 super(PythonCoder, self).__init__(name, site, sex, coder_id)
# 調(diào)用:
if __name__ == '__main__':
 pythonCoder = PythonCoder('wxl', 'http://wuxiaolong.me/', 1, 1024)
 print(androidCoder.get_sex())

注意:多繼承圓括號(hào)中父類的順序,若是父類中有相同的方法名,而在子類使用時(shí)未指定,Python 會(huì)調(diào)用子類的;

Z 繼承 X、Y

class JavaCoder(object):
 java_id = 1
 # 定義構(gòu)造方法
 def __init__(self, java_id):
 self.java_id = java_id
 print('來自JavaCoder')
class FullStackCoder(AndroidCoder, JavaCoder):
 # 定義構(gòu)造方法
 def __init__(self, name, site, sex, coder_id):
 # 調(diào)用父類構(gòu)造方法
 super(FullStackCoder, self).__init__(name, site, sex, coder_id)
 JavaCoder.__init__(self, coder_id) # 這里需要使用老辦法
# 調(diào)用:
if __name__ == '__main__':
 fullStackCoder = FullStackCoder('wxl', 'http://wuxiaolong.me/', 1, 1024)

模塊

Python 模塊跟 Java 里包概念差不多,使用 import 語句導(dǎo)入。

import 語句

比如在類環(huán)節(jié)新建的文件名為 wxl_class.py,想在另個(gè)文件使用:

## 導(dǎo)入模塊
import wxl_class
developer = wxl_class.Developer('wxl', 'http://wuxiaolong.me/', 1) # 實(shí)例變量
print(developer.site)

問題:發(fā)現(xiàn)打印了兩次,原來 wxl_class.py 沒有寫 __name__ 屬性。

__name__ 屬性

每個(gè)模塊都有一個(gè) __name__ 屬性,當(dāng)其值是'__main__'時(shí),表明該模塊自身在運(yùn)行,因此在 wxl_class.py 加上 __main__就好了。

if __name__ == '__main__':
 pass

from…import 語句

從模塊導(dǎo)入指定內(nèi)容或者 * 代表全部:

from wxl_def import hello1
m = hello1(666, 999)

作用域

正常的函數(shù)和變量名是公開的(public),可以被直接引用;

以兩個(gè)下劃線開頭,定義私有(private), 這樣在類外部無法直接進(jìn)行訪問;

以單下劃線開頭的表示的是 protected 類型的變量,即保護(hù)類型只能允許其本身與子類進(jìn)行訪問,不能用于 from module import *。

標(biāo)準(zhǔn)庫

Python 本身帶著一些標(biāo)準(zhǔn)的模塊庫,比如 json 模塊。

Python3 中可以使用 json 模塊來對(duì) JSON 數(shù)據(jù)進(jìn)行編解碼,它包含了兩個(gè)函數(shù):

json.dumps(): 對(duì)數(shù)據(jù)進(jìn)行編碼;

json.loads(): 對(duì)數(shù)據(jù)進(jìn)行解碼。

JSON 類型與 Python 類型對(duì)應(yīng)關(guān)系:


import json
# Python 字典類型轉(zhuǎn)換為 JSON 對(duì)象
python_data = {'id': 1024, 'name': 'wxl', 'site': 'http://wuxiaolong.me/'}
print(json.dumps(python_data)) # 打?。簕"id": 1024, "name": "wxl", "site": "http://wuxiaolong.me/"}
# 將 JSON 對(duì)象轉(zhuǎn)換為 Python 字典
json_data = '{"id": 1024, "name": "wxl", "site": "http://wuxiaolong.me/"}'
print(json.loads(json_data)) # 打?。簕'id': 1024, 'name': 'wxl', 'site': 'http://wuxiaolong.me/'}

第三方模塊

在 Python 中,安裝第三方模塊,是通過包管理工具 pip 完成的。

1、安裝 pip

sudo easy_install pip

2、比如安裝 PyMySQL 模塊來連接數(shù)據(jù)庫,Python 3.x:

pip3 install PyMySQL

返回:

Collecting PyMySQL
 Using cached PyMySQL-0.7.11-py2.py3-none-any.whl
Installing collected packages: PyMySQL
Successfully installed PyMySQL-0.7.11

升級(jí) pip 到最新版本

python -m pip install --upgrade pip

錯(cuò)誤和異常

Java 中捕獲異常是用的 try catch finally,Python 是用的 try…except…finally…:

try:
 name = 'wxl'
 print(int(name))
except ValueError as e: # 所有的錯(cuò)誤類型都繼承自BaseException
 print(e)
finally:
 print('finally')

文件

Python 內(nèi)置了讀寫文件的函數(shù),一般分為 3 步:

1、open() 函數(shù),打開一個(gè)文件對(duì)象;

2、調(diào)用 read() 方法讀取文件內(nèi)容;

3、調(diào)用 close() 方法關(guān)閉文件。

寫文件

桌面新建一個(gè)空白 Python3Learn.txt 文件:

def write_file():
 try:
  f = open('/Users/wuxiaolong/Desktop/Python3Learn.txt', 'w') # 標(biāo)示符'w'表示寫
  f.write('Hello, Python')
 except BaseException as e:
  print(e)
 finally:
  if f:
   f.close()

讀文件

def read_file():
 try:
  f = open('/Users/wuxiaolong/Desktop/Python3Learn.txt', 'r') # 標(biāo)示符'r'表示讀
  # print(f.read()) # read()會(huì)一次性讀取文件的全部?jī)?nèi)容
  print(f.readlines()) # 每次讀取一行內(nèi)容,返回list
 except BaseException as e:
  print(e)
 finally:
  if f:
   f.close()

讀取二進(jìn)制文件

比如圖片、視頻等等,桌面隨便搞張 Python3Learn.png:

def read_byte_file():
 try:
  f = open('/Users/wuxiaolong/Desktop/Python3Learn.png', 'rb') # 標(biāo)示符'rb'表示讀
  print(f.read()) # read()會(huì)一次性讀取文件的全部?jī)?nèi)容
  # print(f.readlines()) # 每次讀取一行內(nèi)容,返回list
 except BaseException as e:
  print(e)
 finally:
  if f:
   f.close()

字符編碼

encoding 參數(shù):讀取非 UTF-8 編碼的文本文件;errors 參數(shù):遇到編碼錯(cuò)誤后如何處理,最簡(jiǎn)單的方式是直接忽略。

f = open('/Users/wuxiaolong/Desktop/Python3Learn.txt', 'r', encoding='gbk', errors='ignore')

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)的資源

    Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)的資源

    這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)資源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python實(shí)現(xiàn)在數(shù)字中添加千位分隔符的方法小結(jié)

    Python實(shí)現(xiàn)在數(shù)字中添加千位分隔符的方法小結(jié)

    在數(shù)據(jù)處理和數(shù)據(jù)可視化中,經(jīng)常需要對(duì)大數(shù)值進(jìn)行格式化,其中一種常見的需求是在數(shù)字中添加千位分隔符,本文為大家整理了三種常見方法,希望對(duì)大家有所幫助
    2024-01-01
  • python創(chuàng)建屬于自己的單詞詞庫 便于背單詞

    python創(chuàng)建屬于自己的單詞詞庫 便于背單詞

    這篇文章主要為大家詳細(xì)介紹了python創(chuàng)建屬于自己的單詞詞庫,便于背單詞,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 解決Windows下PowerShell無法進(jìn)入Python虛擬環(huán)境問題

    解決Windows下PowerShell無法進(jìn)入Python虛擬環(huán)境問題

    這篇文章主要介紹了解決Windows下PowerShell無法進(jìn)入Python虛擬環(huán)境問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 一文搞懂Python讀取text,CSV,JSON文件的方法

    一文搞懂Python讀取text,CSV,JSON文件的方法

    文件處理是一種用于創(chuàng)建文件、寫入數(shù)據(jù)和從中讀取數(shù)據(jù)的過程,Python 擁有豐富的用于處理不同文件類型的包,從而使得我們可以更加輕松方便的完成文件處理的工作,本文將來為大家詳細(xì)講講
    2022-06-06
  • python 多進(jìn)程隊(duì)列數(shù)據(jù)處理詳解

    python 多進(jìn)程隊(duì)列數(shù)據(jù)處理詳解

    今天小編就為大家分享一篇python 多進(jìn)程隊(duì)列數(shù)據(jù)處理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python批量制作雷達(dá)圖的實(shí)現(xiàn)方法

    python批量制作雷達(dá)圖的實(shí)現(xiàn)方法

    本文通過實(shí)例代碼介紹了如何用python批量制作雷達(dá)圖的實(shí)現(xiàn)方法,下面一起來看看如何實(shí)現(xiàn)的。
    2016-07-07
  • Python實(shí)現(xiàn)序列化及csv文件讀取

    Python實(shí)現(xiàn)序列化及csv文件讀取

    這篇文章主要介紹了Python實(shí)現(xiàn)序列化及csv文件讀取,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 詳解在Python中創(chuàng)建條形圖追趕動(dòng)畫

    詳解在Python中創(chuàng)建條形圖追趕動(dòng)畫

    動(dòng)畫是使可視化更具吸引力和用戶吸引力的好方法。它幫助我們以有意義的方式展示數(shù)據(jù)可視化。Matplotlib是一個(gè)非常流行的數(shù)據(jù)可視化庫,通常用于數(shù)據(jù)的圖形表示以及使用內(nèi)置函數(shù)的動(dòng)畫。本文將用Matplotlib繪制條形圖追趕動(dòng)畫,需要的可以參考一下
    2022-03-03
  • Python網(wǎng)絡(luò)編程之HTTP協(xié)議的python應(yīng)用

    Python網(wǎng)絡(luò)編程之HTTP協(xié)議的python應(yīng)用

    HTTP是在網(wǎng)絡(luò)上傳輸HTML的協(xié)議,用于瀏覽器和服務(wù)器的通信,這篇文章主要介紹了Python網(wǎng)絡(luò)編程之HTTP協(xié)議的python應(yīng)用,需要的朋友可以參考下
    2022-11-11

最新評(píng)論

米林县| 聊城市| 东海县| 安泽县| 扎鲁特旗| 伊金霍洛旗| SHOW| 大新县| 广州市| 松溪县| 乌拉特前旗| 镇江市| 滕州市| 天峨县| 晴隆县| 游戏| 陆丰市| 林周县| 故城县| 称多县| 建湖县| 弋阳县| 黄骅市| 浦北县| 渝北区| 承德县| 兰溪市| 房产| 湟源县| 大余县| 乐至县| 扎鲁特旗| 神农架林区| 新津县| 淳化县| 通化县| 封丘县| 定襄县| 隆安县| 陈巴尔虎旗| 双牌县|