国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Python初體驗之基礎語法(四)

2019-11-14 17:04:56
字體:
來源:轉載
供稿:網友

所有測試語句基于Python 2.7.3 , Ubuntu 12.04

自學Python,如果哪里說的不恰當,還請指正。謝謝。

示例絕大部分來自博客園vamei的python教程

 

1.循環對象

#!/usr/bin/env python#coding=UTF-8#包含一個next()方法 每次循環調用next()#直到StopIteration異常出現 停止調用next()方法f = open('test.txt')for line in f:    PRint line

 

#生成器 自定義一個循環對象#定義與函數類似  只是return改為yield#每次循環使用一個yield的返回值def gen():    a = 10    yield a    a = a**2    yield a    a = a+10    yield a    yield 525#該生成器共有4個yield,用作循環器時,會進行4次循環for a in gen():    print a

 

生成器 generator

#對于形如下的是生成器 可以簡寫為 G = ( x for x in range(m))# 名為生成器表達式 (Generator Expression)def gen():    for i in range(4):        yield iG = (x for x in range(4))for a in G:    print a

 

表推導

#表推導 list comprehension 快速生成表#表推導的機制 實際上是利用了循環對象L = []for i in range(10):    L.append(i*2)    print L#簡寫形式 使用中括號L = [x*2 for x in range(10)]print L

 

測試練習:

#test zip() 聚合函數#聚合后 [(1,7),(3,12),(5,13)]#設定y>10 所以 x取3和5.  L=[6,10]a = [1,3,5]b = [7,12,13]L = [x*2 for (x,y) in zip(a,b) if y > 10]print L

 

2.函數對象

函數也是對象,將函數名作為參數傳遞

def func(a, b):    return a + bdef test(f, a, b):    print 'test'    print f(a, b)test(func, 1, 2)

test函數的第一個參數f就是一個函數對象。將func傳遞給f,test中的f()就擁有了func()的功能。

 

map()函數

def func(a, b):    return a + b# map()的功能是將函數對象依次作用于表的每一個元素# 每次作用的結果儲存于返回的表re中# map()將每次從兩個表中分別取出一個元素,帶入所定義的函數。re = map(func, [1, 2, 3, 4], [2, 3, 4, 5])print re

 

filter()函數  filter通過讀入的函數來篩選數據

def func(a):    if a > 100:        return True    else:        return Falseprint filter(func, [10, 99, 101, 500])

返回結果為 [101,500]

在Python 3.X中,filter返回的不是表,而是循環對象。

 

reduce()函數 要求函數自身能接收兩個參數。reduce可以累進地將函數作用于各個參數。

def func(a, b):    return a * bre = reduce(func, [1, 2, 3, 4])print re

reduce()函數在3.0里面不能直接用的,它被定義在了functools包里面,需要引入包

 

異常 與其他高級語言異常處理差別不大 只是關鍵字有變化 另外多了一個else 的分支

try:    ...except exception1:    ...except exception2:    ...except:    ...else:    ...finally:    ...

 

流程如下,

try->異常->except->finally

try->無異常->else->finally

在try程序段中,我們放入容易犯錯的部分。我們可以跟上except,來說明如果在try部分的語句發生StopIteration時,程序該做的事情。如果沒有發生異常,則except部分被跳過。隨后,程序將繼續運行,而不是徹底中斷。如果try中有異常發生時,將執行異常的歸屬,執行except。異常層層比較,看是否是exception1, exception2...,直到找到其歸屬,執行相應的except中的語句。如果except后面沒有任何參數,那么表示所有的exception都交給這段程序處理。如果無法將異常交給合適的對象,異常將繼續向上層拋出,直到被捕捉或者造成主程序報錯。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰察布市| 介休市| 洪洞县| 北安市| 永清县| 西安市| 西平县| 家居| 博白县| 吉林省| 万年县| 来凤县| 宾川县| 南宁市| 衡阳县| 木兰县| 冀州市| 吴川市| 新沂市| 隆化县| 建宁县| 南川市| 甘谷县| 苏尼特右旗| 琼海市| 永川市| 岗巴县| 会泽县| 中阳县| 恭城| 江城| 大邑县| 胶南市| 肇东市| 太白县| 皮山县| 沛县| 平泉县| 西宁市| 丽江市| 英吉沙县|