欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)庫(kù)

Python 本身帶著一些標(biāo)準(zhǔn)的模塊庫(kù),比如 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ù)庫(kù),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中的條件賦值判斷語句語法

    python中的條件賦值判斷語句語法

    這篇文章主要介紹了python條件賦值判斷語句語法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Djang的model創(chuàng)建的字段和參數(shù)詳解

    Djang的model創(chuàng)建的字段和參數(shù)詳解

    這篇文章主要介紹了Djang的model創(chuàng)建的字段和參數(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python提取excel一列或多列數(shù)據(jù)另存為新表代碼實(shí)例

    python提取excel一列或多列數(shù)據(jù)另存為新表代碼實(shí)例

    在日常的工作中,其實(shí)就是用鼠標(biāo)進(jìn)行數(shù)據(jù)篩選,然后選擇你想要這一行數(shù)據(jù)進(jìn)行復(fù)制,下面這篇文章主要給大家介紹了關(guān)于python提取excel一列或多列數(shù)據(jù)另存為新表的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • 使用matplotlib實(shí)現(xiàn)在同一個(gè)窗口繪制多個(gè)圖形

    使用matplotlib實(shí)現(xiàn)在同一個(gè)窗口繪制多個(gè)圖形

    這篇文章主要介紹了使用matplotlib實(shí)現(xiàn)在同一個(gè)窗口繪制多個(gè)圖形問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 詳解Python如何使用audioflux處理音頻數(shù)據(jù)

    詳解Python如何使用audioflux處理音頻數(shù)據(jù)

    Python的audioflux庫(kù)是一個(gè)處理音頻數(shù)據(jù)的強(qiáng)大工具,旨在提供簡(jiǎn)單而強(qiáng)大的接口,用于音頻信號(hào)處理、分析和合成,下面就跟隨小編一起來學(xué)習(xí)一下它的具體使用吧
    2023-06-06
  • Python的pytest測(cè)試框架使用詳解

    Python的pytest測(cè)試框架使用詳解

    這篇文章主要介紹了Python的pytest測(cè)試框架使用詳解,說到?pytest,大家總不免要拿來和?unittest?來比一下,但是?unittest?畢竟是標(biāo)準(zhǔn)庫(kù),兼容性方面肯定沒得說,但要論簡(jiǎn)潔和方便的話,pytest?也是不落下風(fēng)的,需要的朋友可以參考下
    2023-07-07
  • Python OpenCV 彩色與灰度圖像的轉(zhuǎn)換實(shí)現(xiàn)

    Python OpenCV 彩色與灰度圖像的轉(zhuǎn)換實(shí)現(xiàn)

    為了加快處理速度在圖像處理算法中,往往需要把彩色圖像轉(zhuǎn)換為灰度圖像,本文主要介紹了Python OpenCV 彩色與灰度圖像的轉(zhuǎn)換實(shí)現(xiàn),感興趣的可以了解一下
    2021-06-06
  • Python Pygame中精靈和碰撞檢測(cè)詳解

    Python Pygame中精靈和碰撞檢測(cè)詳解

    對(duì)于游戲中出現(xiàn)的每一樣?xùn)|西,比如磚塊箱子水管地面,還有人物都可以看成是一個(gè)獨(dú)立的物體,所以每個(gè)物體類都繼承了pygame的精靈類pg.sprite.Sprite,這篇文章主要給大家介紹了關(guān)于Python Pygame中精靈和碰撞檢測(cè)的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • python基于Selenium的web自動(dòng)化框架

    python基于Selenium的web自動(dòng)化框架

    這篇文章主要介紹了python基于Selenium的web自動(dòng)化框架,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python中的匿名函數(shù)使用簡(jiǎn)介

    Python中的匿名函數(shù)使用簡(jiǎn)介

    這篇文章主要介紹了Python中的匿名函數(shù)的使用,lambda是各個(gè)現(xiàn)代編程語言中的重要功能,需要的朋友可以參考下
    2015-04-04

最新評(píng)論