老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務器等服務

Python語言高級語法

一)列表解析表達式

公司主營業(yè)務:成都網(wǎng)站制作、網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出晉寧免費做網(wǎng)站回饋大家。

定義: 它是通過對“序列”中的每一項運行一個表達式來創(chuàng)建一個新的列表的方法,每次一個,從左至右,其能夠在任何可迭代的對象上進行迭代。

語法: [ item for item in seq [if statement]]   //可以用if語句對迭代結(jié)果進行篩選

舉例:

>>>a = [1,2,3,4,5]

>>>[i for i in a if i  % 2 == 0]

>>>[2, 4]

二)生成器表達式

定義: 它是通過對“序列”中的每一項運行一個表達式來創(chuàng)建一個新的生成器對象,每次一個,從左至右,其能夠在任何可迭代的對象上進行運算。

語法: (item for item in seq [if statement])   //可以用if語句對運算結(jié)果進行篩選

舉例:

>>>a = [[1,2,3],[4,5,6],[7,8,9]]

>>>(sum(i) for i in a if i  % 5 == 0]

>>>[15]

>>>[i for i in (sum(row) for row in a)]

>>>[6,15,24]

注:生成器是迭代器的一種,迭代器支持next(iterator)方法和iterator.__next__()方法。

三)列表解析語法擴展運用:用來創(chuàng)建集合和字典

定義: 它是通過對“序列”中的每一項運行一個表達式來創(chuàng)建一個新的集合或字典,每次一個,從左至右,其能夠在任何可迭代的對象上進行運算。

舉例:

>>>{ord(x) for x in 'spaam'}

>>>{112, 97, 115, 109}  //集合會自動去重

>>>{x:ord(x) for x in 'spaam'}

>>>{'a':97,'p':112,'s':115,'m':109}  //字典的key唯一

四)創(chuàng)建字典的其他方法

1.

>>>dict(name='liyu', age=31)

>>>{'name':'liyu','age':31}

2.

>>>dict(zip(keyList, valueList))

3.

>>>dict.fromkeys(sequence, defaultValue)

>>>dict.fromkeys('ab',0)

>>>{'a':0,'b':0}

五)迭代器及常見迭代工具

可迭代的:指可用迭代工具依次取出值的對象,如字符串,列表,元組等,同時可用內(nèi)置函數(shù)iter()或者對象本身的__iter__()方法將該對象轉(zhuǎn)換成迭代器對象。

迭代器:指支持迭代工具的同時,還可以用內(nèi)置函數(shù)next()或?qū)ο蟊旧淼腳_next__()方法依次取出值的對象。

總之:迭代器一定是可迭代的,但可迭代的不一定是迭代器,如常見的字符串,列表等是可迭代的,但不是迭代器。(由于迭代器一定是可迭代的,因此迭代器也支持iter()和__iter__()函數(shù)及方法,只是iter(迭代器)就是迭代器本身。)

常見迭代工具:for, in, map, zip, 列表解析,sorted, enumerate, sum, any, max, min等。

  1. map使用

    語法: map(funcName, iterableObject)

    >>> b = map(abs, [-1, 0, 1])        //返回map迭代器

    注:map參數(shù)可以是多個序列,每個序列相應位置的值同時傳給運算函數(shù);如果序列成員個數(shù)不一致,則以最短序列為準。

  2. zip使用

    語法: zip(iterableObject, iterableObject, ...)

    >>> c = zip('abc', [1,2,3], [4,5,6])      //返回zip迭代器

    注:如果序列成員個數(shù)不一致,則以最短序列為準。

  3. filter使用

        用法與map類型,其返回filter迭代器(對可迭代對象的每一項進行函數(shù)運算,如果運算后結(jié)果為True,則該項作為filter迭代器中的一項)。

六)閉合函數(shù)(工廠函數(shù))

定義:一個能夠記住嵌套作用域(具有嵌套作用域的基礎(chǔ)或者說前提是,須有嵌套的函數(shù)定義)的變量值的函數(shù)。(注:Python函數(shù)能夠保存狀態(tài)信息的主要方法有三種:全局變量、閉合函數(shù)及默認參數(shù)。)

舉例:

def func1(y):

    def func2(x)

        return(x**y)

    return(func2)        //這里返回的是內(nèi)層函數(shù)名(內(nèi)層函數(shù)對象)

>>>f = func1(2)        //y為2這個func1的本地變量值被保存,并將內(nèi)層函數(shù)對象賦值給變量f(即重命名func2為f)。

>>>f(3)===>9

>>>f(4)===>16

七)嵌套作用域與lambda匿名函數(shù)表達式

注:為什么將lambda匿名函數(shù)稱為lambda匿名函數(shù)表達式,是因為lambda會創(chuàng)建一個函數(shù)對象,并將該對象返回,使用者需要用一個變量來引用(“存儲”)該對象,所以稱為表達式。(與一般意義的def區(qū)別就在于,def創(chuàng)建函數(shù)對象,并會將該函數(shù)對象賦值給函數(shù)名。)

由于嵌套作用域的查找原則和工廠函數(shù)能保存記住嵌套作用域變量值的特性,lambda函數(shù)和def函數(shù)定義可自然而然地結(jié)合使用:

def func1(y):

    action = (lambda x: x**y)

    return(action)

>>>f=func1(2)

>>>f(3)===>9

>>>f(5)===>25

特別注意:如果lambda或者def嵌套在函數(shù)中定義,且其定義嵌套在一個循環(huán)之中并且嵌套的函數(shù)引用了一個上層作用域的變量,而該變量又被循環(huán)所改變,則所有在這個循環(huán)中產(chǎn)生的函數(shù)將會有相同的值——在最后一次循環(huán)中完成時被引用變量的值。

def makeActions():

    acts=[]

    for i in range(5):

        acts.append(lambda x: i**x)

    return(acts)

actions=makeActions()

>>>actions[0](2)===>16        //i始終使用的是4

>>>actions[4](2)===>16


如果想得到下面結(jié)果:

>>>actions[0](2)===>0        //i隨循環(huán)遞增

>>>actions[4](2)===>16


則函數(shù)需做如下修改:

def makeActions():

    acts=[]

    for i in range(5):

        acts.append(lambda x, i=i: i**x)        //原理是:如果不添加i=i,則每次調(diào)用lambda函數(shù)時都是找父函數(shù)中的i,而父函數(shù)中的i在循環(huán)完成時已經(jīng)變?yōu)榱?;添加了i=i,則每次創(chuàng)建lambda函數(shù)時,相當于在lambda函數(shù)內(nèi)部創(chuàng)建了變量名為i的本地變量

    return(acts)

八)__init__.py文件的使用

該文件主要有3大作用:

  1. 包的初始化:Python首次導入某個目錄或目錄下的目錄或文件時,系統(tǒng)會自動執(zhí)行該目錄下的__init__.py文件中的代碼,因此該文件通常存放一些初始化代碼及鉤子函數(shù)等;

  2. 給目錄虛擬化一個模塊對象,從而形成目錄(虛擬化目錄模塊)的命名空間。當使用"import 目錄"直接導入目錄時,系統(tǒng)會為目錄創(chuàng)建一個同名虛擬模塊命名空間,且該命名空間包含了目錄下__init__.py文件中所有賦值的變量名(注:僅包含__init__.py文件中定義或引入的,而不會包含該目錄下的子模塊或目錄)。 

  3. 可在__init__.py文件中定義__all__列表自定義采用 “from 目錄 import *”方式導入目錄下變量的時候會導入哪些該目錄下的子模塊,如果不定義__all__列表,“from 目錄 import *”所導入的變量實質(zhì)是等同于"import 目錄"的,區(qū)別只是在于一個可直接訪問,或者需要以目錄.變量訪問。(注:__all__定義僅適用于from *模式導入(如果用import 目錄模式導入,__all__列表設(shè)置不起作用),且一旦定義了__all__列表且用from *模式導入,則__init__.py文件自身的變量不可被導入,除非也將其寫入__all__列表。)

九)_x及__all__設(shè)置隱藏模塊及目錄導入數(shù)據(jù)

_x是以單下劃線開始的變量定義(私有變量聲明),__all__是設(shè)置變量名列表,這2者均可設(shè)置在__init__.py文件和普通的模塊文件,其使用范圍也均僅限于from *模式導入方式。_x方式定義其不可被導入,而__all__定義其可被導入,兩者作用相反。

十)


分享名稱:Python語言高級語法
分享URL:http://www.xueling.net.cn/article/pecepd.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 成年美女黄网站色大免费视频 | 欧美搞逼视频 | 亚洲综合视频网站 | 日韩一级片播放 | 久久精品AⅤ无码中文字字幕重口 | 婬荡少妇21P| 狠狠狠狠狠狠狠干 | 91豆花视频| 丝袜美女被出水一区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 久热中文字幕在线精品观 | 欧美肥老太牲交大战 | 国产免费v | 一区二区三区的视频 | 国产精品久久不能 | 国产经典久久久 | 成人免费视频网址 | GOGOGO高清在线观看免费 | 一夲道无码人妻精品一区二区 | 不卡的一区 | 激情欲成人av在线观看av | 欧美黄色看 | 丰满少妇又爽又紧又丰满在线观看 | 久久免费看少妇高潮A片特无毒 | 国产www网站 | 欧美黑人添添高潮a片www | 高清日本欧美久久 | 毛片免费全部播放无码私人 | 日韩一级片一区二区三区 | 毛片网站观看 | 9x9x9x人成免费观看y | 日本性视频在线 | 97伊人久久 | 国产在线精品一区二区在线播放 | 亚洲色一区二区三区四区 | 中文字幕第27页 | 国产精品片 | 国产精品自拍在线观看 | 豆花视频在线观看 | 亚洲日韩看片无码AV | 国产性受xxxx黑人xyx性爽 |