當前位置:首頁 > 消費電子 > 消費電子
[導讀]Python由荷蘭數(shù)學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設計,作為一門叫做ABC語言的替代品。 Python提供了高效的高級數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊獭?

Python由荷蘭數(shù)學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設計,作為一門叫做ABC語言的替代品。 Python提供了高效的高級數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊獭ython語法和動態(tài)類型,以及解釋型語言的本質(zhì),使它成為多數(shù)平臺上寫腳本和快速開發(fā)應用的編程語言, [2] 隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨立的、大型項目的開發(fā)。 Python解釋器易于擴展,可以使用C語言或C++(或者其他可以通過C調(diào)用的語言)擴展新的功能和數(shù)據(jù)類型。 Python也可用于可定制化軟件中的擴展程序語言。Python豐富的標準庫,提供了適用于各個主要系統(tǒng)平臺的源碼或機器碼。

由于Python語言的簡潔性、易讀性以及可擴展性,在國外用Python做科學計算的研究機構(gòu)日益增多,一些知名大學已經(jīng)采用Python來教授程序設計課程。例如卡耐基梅隆大學的編程基礎、麻省理工學院的計算機科學及編程導論就使用Python語言講授。眾多開源的科學計算軟件包都提供了Python的調(diào)用接口,例如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫(yī)學圖像處理庫ITK。而Python專用的科學計算擴展庫就更多了,例如如下3個十分經(jīng)典的科學計算擴展庫:NumPy、SciPy和matplotlib,它們分別為Python提供了快速數(shù)組處理、數(shù)值運算以及繪圖功能。因此Python語言及其眾多的擴展庫所構(gòu)成的開發(fā)環(huán)境十分適合工程技術(shù)、科研人員處理實驗數(shù)據(jù)、制作圖表,甚至開發(fā)科學計算應用程序。2018年3月,該語言作者在郵件列表上宣布Python 2.7將于2020年1月1日終止支持。用戶如果想要在這個日期之后繼續(xù)得到與Python 2.7有關(guān)的支持,則需要付費給商業(yè)供應商。

一,函數(shù)簡介

如數(shù)學上的函數(shù)一樣,例如三角函數(shù)sin(),給一個角度值,他就會有一個結(jié)果。用計算器計算時,我們知道輸入角度就會有結(jié)果,那么在編程時如何實現(xiàn)sin()這個函數(shù)的功能呢?

1,函數(shù)的基本概念

函數(shù)也叫功能,它是對數(shù)據(jù)與代碼的封裝,實現(xiàn)了代碼的復用。

當我們在pycharm中寫代碼時,假如先寫了一個功能的代碼,我們可以右鍵進行運行;如果我們又寫了一個功能代碼,點擊運行時,兩個功能代碼都會運行,這時就可以把各個功能的代碼塊進行封裝起來,寫成函數(shù)。下次想要用哪個功能就調(diào)哪個函數(shù)。

2,函數(shù)的分類

python函數(shù)有四類,分別是:內(nèi)置函數(shù)(builtin functions),標準庫函數(shù),第三方庫函數(shù),自定義函數(shù)。

內(nèi)置函數(shù):python一經(jīng)運行就加載到內(nèi)存的,例如有l(wèi)ist,len,str等函數(shù)

標準庫函數(shù):需要用import語句進行導入,常見標準庫有time,os等

第三方庫:需要另外下載到本地的庫,例如opencv庫,然后用import導入

自定義函數(shù):自己在模塊里的寫的函數(shù)

二,函數(shù)的定義與調(diào)用

1,python函數(shù)的定義

定義語法如下:

def 函數(shù)名 (參數(shù)) :

'''文檔字符串'''

函數(shù)體/若干語句

def func():

"""

打印'人生苦短,我學python'

"""

print('人生苦短,我學python')

當python解釋器遇到def時,他就會在內(nèi)存里創(chuàng)建一塊內(nèi)存塊來存儲代碼信息,即函數(shù)對象,然后將內(nèi)存塊的首地址給函數(shù)名稱,實現(xiàn)變量名與函數(shù)對象的綁定。

然而并不會執(zhí)行,因為還沒有調(diào)用。

2,函數(shù)的調(diào)用

語法格式如下:

函數(shù)名()

def func():

"""

打印'人生苦短,我學python'

"""

print('人生苦短,我學python')

func()

# 人生苦短,我學python

在函數(shù)名的后面加上英文小括號()即可。

另外除了用函數(shù)名來綁定函數(shù)對象之外,也可以用其他變量名來綁定函數(shù)。

def func():

"""

打印'人生苦短,我學python'

"""

print('人生苦短,我學python')

func_copy = func # func_copy也與函數(shù)對象進行了綁定

func_copy()

# 人生苦短,我學python

函數(shù)對象也有三屬性,也就是類型,id,值。

類型就是函數(shù)類型;id就是函數(shù)對象的地址;值就是函數(shù)封裝的各種數(shù)據(jù)和代碼,但是利用print打印時只會打印出函數(shù)的id地址。

def func():

"""

打印'人生苦短,我學python'

"""

print('人生苦短,我學python')

func_copy = func

print(func_copy, 'and', type(func_copy), 'and', id(func_copy), 'and', id(func))

# and and 2981859760744 and 2981859760744

3,return語句

return語句用于將函數(shù)處理結(jié)果返回,或者返回一些其他數(shù)據(jù)。當return被執(zhí)行,代表函數(shù)調(diào)用結(jié)束,也就是說return語句的作用之二就是結(jié)束函數(shù)的調(diào)用。

def maxab(a, b):

'''

比較兩個整數(shù)的大小

'''

if type(a) == int and type(b) == int:

return a if a >= b else b

else:

return '類型錯誤'

print(maxab(1, 2))

print(maxab(1, 'q'))

# 2

# 類型錯誤

如果函數(shù)體里不寫return,默認返回None。

def pr():

print(666)

print(pr()) # 先調(diào)用pr,再打印出返回值

# 666

# None

return可以返回任何東西。

def test():

return [1, 2, 3, 4] # 返回一個列表

print(test())

def test():

return test # 返回函數(shù)對象本身

print(test()())

def test():

return range(5) # 返回一個range對象

for itm in test():

print(itm)

# [1, 2, 3, 4]

#

# 0

# 1

# 2

# 3

# 4

三,變量的作用域(全局變量和局部變量)

變量起作用的范圍稱為變量的作用域,不同作用域內(nèi)同名變量之間互不影響。變量分為:全局變量、局部變量。

所謂起作用的范圍就是,某些代碼他隸屬于不同的語句。例如定義了一個函數(shù),函數(shù)體里的所有代碼是屬于這個函數(shù)的,因為縮進已經(jīng)不同了。在函數(shù)體里的定義的變量在函數(shù)里面可以使用,但是在函數(shù)外邊卻用不了。

1,全局變量

1 ,在函數(shù)和類定義之外聲明的變量。全局變量的縮進為0,作用域為定義的模塊,從定義位置開始直到模塊結(jié)束。也就是說,全局變量即使沒有定義在函數(shù)里邊,但是在函數(shù)里邊也可以使用,只是使用而已,修改的話需要作說明。這就是全局變量在整個.py文件里都可以訪問使用的原因。

2 ,全局變量降低了函數(shù)的通用性和可讀性。應盡量避免全局變量的使用。

3 ,要在函數(shù)內(nèi)修改全局變量的值,使用 global 聲明一下。

out = 520 # 全局變量

print(out, 'and id is ', id(out))

def test():

out = 520 # 局部變量

print(out, 'and id is ', id(out))

test()

# 520 and id is 2305420215504

# 520 and id is 2305450107984

# 明顯兩個id不同,因為在函數(shù)里面對全局變量進行修改,會隱藏全部變量,另外生成一個新對象

兩個out變量名字雖然相同,但不是綁定的同一個對象。但是當整數(shù)比較小時,由于整數(shù)緩存,他們都是同一個變量。

out = 520

print(out, 'and id is ', id(out))

def test():

global out # 用global聲明out變量和全局變量out是同一個

print(out, 'and id is ', id(out))

test()

# 520 and id is 2355312182480

# 520 and id is 2355312182480

在函數(shù)里用global把同名變量聲明為全局變量,則會修改函數(shù)外部的變量。

2,局部變量

1 ,在函數(shù)體中聲明的變量。(包括形參變量也是局部變量)。

2 ,局部變量的引用比全局變量快,優(yōu)先考慮使用。這里是說,在函數(shù)或者類里面操作自己的局部變量比操作外部變量快。

3 ,如果局部變量和全局變量同名,如果對同名變量進行賦值操作,則在函數(shù)內(nèi)隱藏全局變量,只使用同名的局部變量

Python 函數(shù)

函數(shù)是組織好的,可重復使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。

函數(shù)能提高應用的模塊性,和代碼的重復利用率。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。

定義一個函數(shù)

你可以定義一個由自己想要功能的函數(shù),以下是簡單的規(guī)則:

函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標識符名稱和圓括號()。

任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。

函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。

函數(shù)內(nèi)容以冒號起始,并且縮進。

return [表達式] 結(jié)束函數(shù),選擇性地返回一個值給調(diào)用方。不帶表達式的return相當于返回 None。

語法

def functionname( parameters ): "函數(shù)_文檔字符串" function_suite return [expression]

默認情況下,參數(shù)值和參數(shù)名稱是按函數(shù)聲明中定義的順序匹配起來的。

實例

以下為一個簡單的Python函數(shù),它將一個字符串作為傳入?yún)?shù),再打印到標準顯示設備上。

實例(Python 2.0+)

def printme( str ): "打印傳入的字符串到標準顯示設備上" print str return

函數(shù)調(diào)用

定義一個函數(shù)只給了函數(shù)一個名稱,指定了函數(shù)里包含的參數(shù),和代碼塊結(jié)構(gòu)。

這個函數(shù)的基本結(jié)構(gòu)完成以后,你可以通過另一個函數(shù)調(diào)用執(zhí)行,也可以直接從Python提示符執(zhí)行。

如下實例調(diào)用了printme()函數(shù):

實例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- # 定義函數(shù) def printme( str ): "打印任何傳入的字符串" print str return # 調(diào)用函數(shù) printme("我要調(diào)用用戶自定義函數(shù)!") printme("再次調(diào)用同一函數(shù)")

以上實例輸出結(jié)果:

我要調(diào)用用戶自定義函數(shù)!

再次調(diào)用同一函數(shù)

參數(shù)傳遞

在 python 中,類型屬于對象,變量是沒有類型的:

a=[1,2,3] a="Runoob"

以上代碼中,[1,2,3] 是 List 類型,"Runoob" 是 String 類型,而變量 a 是沒有類型,她僅僅是一個對象的引用(一個指針),可以是 List 類型對象,也可以指向 String 類型對象。

可更改(mutable)與不可更改(immutable)對象

在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。

不可變類型:變量賦值 a=5 后再賦值 a=10,這里實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當于新生成了a。

可變類型:變量賦值 la=[1,2,3,4] 后再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內(nèi)部的一部分值被修改了。

python 函數(shù)的參數(shù)傳遞:

不可變類型:類似 c++ 的值傳遞,如 整數(shù)、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內(nèi)部修改 a 的值,只是修改另一個復制的對象,不會影響 a 本身。

可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改后fun外部的la也會受影響

python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳可變對象。

python 傳不可變對象實例

實例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- def ChangeInt( a ): a = 10 b = 2 ChangeInt(b) print b # 結(jié)果是 2

實例中有 int 對象 2,指向它的變量是 b,在傳遞給 ChangeInt 函數(shù)時,按傳值的方式復制了變量 b,a 和 b 都指向了同一個 Int 對象,在 a=10 時,則新生成一個 int 值對象 10,并讓 a 指向它。

聲明:該篇文章為本站原創(chuàng),未經(jīng)授權(quán)不予轉(zhuǎn)載,侵權(quán)必究。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉