函數(shù)調(diào)用
myFun()
# 函數(shù)的參數(shù)
# 單個(gè)參數(shù)
# 場(chǎng)景
# 需要?jiǎng)討B(tài)的調(diào)整函數(shù)體中某一個(gè)處理信息
# 則可以, 以參數(shù)的形式接收到相關(guān)數(shù)據(jù)
# 定義
# def 函數(shù)名(參數(shù)名稱(chēng)):
# 函數(shù)體
# 函數(shù)體中, 可以直接以變量的方式使用該參數(shù)
# 函數(shù)的調(diào)用
# 函數(shù)名(參數(shù)值)
# 形參和實(shí)參的概念
# 上述函數(shù)定義中, "參數(shù)名稱(chēng)"即為形參;
# 在調(diào)用函數(shù)的時(shí)候, 傳遞的真實(shí)數(shù)據(jù), 即為實(shí)參
# 多個(gè)參數(shù)
# 場(chǎng)景
# 需要?jiǎng)討B(tài)的調(diào)整函數(shù)體中多個(gè)處理信息時(shí)
# 則可以以 逗號(hào) 做分割, 接收多個(gè)參數(shù)
# 定義
# def 函數(shù)名(參數(shù)名稱(chēng)1, 參數(shù)名稱(chēng)2):
# 函數(shù)體
# 函數(shù)體中, 可以直接以變量的方式使用所有參數(shù)
# 調(diào)用
# 方式1
# 函數(shù)名(參數(shù)1, 參數(shù)2, 參數(shù)3。)
# 形參和實(shí)參一一對(duì)應(yīng)
# 方式2
# 函數(shù)名(參數(shù)名稱(chēng)1=參數(shù)1, 參數(shù)名稱(chēng)n = 參數(shù)n。)
# 可以指明形參名稱(chēng)
# 稱(chēng)為"關(guān)鍵字參數(shù)"
# 不需要嚴(yán)格按照順序
# 不定長(zhǎng)參數(shù)
# 場(chǎng)景
# 如果函數(shù)體中, 需要處理的數(shù)據(jù), 不確定長(zhǎng)度
# 則可以以不定長(zhǎng)參數(shù)的方式接收數(shù)據(jù)
# 方式1
# 定義
# def 函數(shù)名(*args):
# 元組
# 函數(shù)體
# 函數(shù)體中, 可以直接以元組變量的方式使用該參數(shù)
# 使用
# 函數(shù)名(參數(shù)1, 參數(shù)2, 參數(shù)3。)
Python 函數(shù) 函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。
函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如print()。
但你也可以自己創(chuàng)建函數(shù),這被叫做用戶(hù)自定義函數(shù)。 定義一個(gè)函數(shù) 你可以定義一個(gè)由自己想要功能的函數(shù),以下是簡(jiǎn)單的規(guī)則: 函數(shù)代碼塊以 def 關(guān)鍵詞開(kāi)頭,后接函數(shù)標(biāo)識(shí)符名稱(chēng)和圓括號(hào)()。
任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間。圓括號(hào)之間可以用于定義參數(shù)。
函數(shù)的第一行語(yǔ)句可以選擇性地使用文檔字符串—用于存放函數(shù)說(shuō)明。函數(shù)內(nèi)容以冒號(hào)起始,并且縮進(jìn)。
return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回 None。
語(yǔ)法 def functionname( parameters ): "函數(shù)_文檔字符串" function_suite return [expression] 默認(rèn)情況下,參數(shù)值和參數(shù)名稱(chēng)是按函數(shù)聲明中定義的順序匹配起來(lái)的。 實(shí)例 以下為一個(gè)簡(jiǎn)單的Python函數(shù),它將一個(gè)字符串作為傳入?yún)?shù),再打印到標(biāo)準(zhǔn)顯示設(shè)備上。
實(shí)例(Python 2.0+) def printme( str ): "打印傳入的字符串到標(biāo)準(zhǔn)顯示設(shè)備上" print str return 函數(shù)調(diào)用 定義一個(gè)函數(shù)只給了函數(shù)一個(gè)名稱(chēng),指定了函數(shù)里包含的參數(shù),和代碼塊結(jié)構(gòu)。 這個(gè)函數(shù)的基本結(jié)構(gòu)完成以后,你可以通過(guò)另一個(gè)函數(shù)調(diào)用執(zhí)行,也可以直接從Python提示符執(zhí)行。
如下實(shí)例調(diào)用了printme()函數(shù): 實(shí)例(Python 2.0+) #!/usr/bin/python# -*- coding: UTF-8 -*- # 定義函數(shù)def printme( str ): "打印任何傳入的字符串" print str return # 調(diào)用函數(shù)printme("我要調(diào)用用戶(hù)自定義函數(shù)!")printme("再次調(diào)用同一函數(shù)") 以上實(shí)例輸出結(jié)果: 我要調(diào)用用戶(hù)自定義函數(shù)!再次調(diào)用同一函數(shù)參數(shù)傳遞 在 python 中,類(lèi)型屬于對(duì)象,變量是沒(méi)有類(lèi)型的: a=[1,2,3] a="Runoob" 以上代碼中,[1,2,3] 是 List 類(lèi)型,"Runoob" 是 String 類(lèi)型,而變量 a 是沒(méi)有類(lèi)型,她僅僅是一個(gè)對(duì)象的引用(一個(gè)指針),可以是 List 類(lèi)型對(duì)象,也可以指向 String 類(lèi)型對(duì)象。 可更改(mutable)與不可更改(immutable)對(duì)象 在 python 中,strings, tuples, 和 numbers 是不可更改的對(duì)象,而 list,dict 等則是可以修改的對(duì)象。
不可變類(lèi)型:變量賦值 a=5 后再賦值 a=10,這里實(shí)際是新生成一個(gè) int 值對(duì)象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當(dāng)于新生成了a。可變類(lèi)型:變量賦值 la=[1,2,3,4] 后再賦值 la[2]=5 則是將 list la 的第三個(gè)元素值更改,本身la沒(méi)有動(dòng),只是其內(nèi)部的一部分值被修改了。
python 函數(shù)的參數(shù)傳遞: 不可變類(lèi)型:類(lèi)似 c++ 的值傳遞,如 整數(shù)、字符串、元組。如fun(a),傳遞的只是a的值,沒(méi)有影響a對(duì)象本身。
比如在 fun(a)內(nèi)部修改 a 的值,只是修改另一個(gè)復(fù)制的對(duì)象,不會(huì)影響 a 本身??勺冾?lèi)型:類(lèi)似 c++ 的引用傳遞,如 列表,字典。
如 fun(la),則是將 la 真正的傳過(guò)去,修改后fun外部的la也會(huì)受影響python 中一切都是對(duì)象,嚴(yán)格意義我們不能說(shuō)值傳遞還是引用傳遞,我們應(yīng)該說(shuō)傳不可變對(duì)象和傳可變對(duì)象。 python 傳不可變對(duì)象實(shí)例 實(shí)例(Python 2.0+) #!/usr/bin/python# -*- coding: UTF-8 -*- def ChangeInt( a ): a = 10 b = 2ChangeInt(b)print b # 結(jié)果是 2 實(shí)例中有 int 對(duì)象 2,指向它的變量是 b,在傳遞給 ChangeInt 函數(shù)時(shí),按傳值的方式復(fù)制了變量 b,a 和 b 都指向了同一個(gè) Int 對(duì)象,在 a=10 時(shí),則新生成一個(gè) int 值對(duì)象 10,并讓 a 指向它。
傳可變對(duì)象實(shí)例 實(shí)例(Python 2.0+) #!/usr/bin/python# -*- coding: UTF-8 -*- # 可寫(xiě)函數(shù)說(shuō)明def changeme( mylist ): "修改傳入的列表" mylist.append([1,2,3,4]) print "函數(shù)內(nèi)取值: ", mylist return # 調(diào)用changeme函數(shù)mylist = [10,20,30]changeme( mylist )print "函數(shù)外取值: ", mylist 實(shí)例中傳入函數(shù)的和在末尾添加新內(nèi)容的對(duì)象用的是同一個(gè)引用,故輸出結(jié)果如下: 函數(shù)內(nèi)取值: [10, 20, 30, [1, 2, 3, 4]]函數(shù)外取值: [10, 20, 30, [1, 2, 3, 4]]參數(shù) 以下是調(diào)用函數(shù)時(shí)可使用的正式參數(shù)類(lèi)型: 必備參數(shù)關(guān)鍵字參數(shù)默認(rèn)參數(shù)不定長(zhǎng)參數(shù)必備參數(shù) 必備參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時(shí)的數(shù)量必須和聲明時(shí)的一樣。
調(diào)用printme()函數(shù),你必須傳入一個(gè)參數(shù),不然會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤: 實(shí)例(Python 2.0+) #!/usr/bin/python# -*- coding: UTF-8 -*- #可寫(xiě)函數(shù)說(shuō)明def printme( str ): "打印任何傳入的字符串" print str return #調(diào)用printme函數(shù)printme() 以上實(shí)例輸出結(jié)果: Traceback (most recent call last): File "test.py", line 11, in printme()TypeError: printme() takes exactly 1 argument (0 given)關(guān)鍵字參數(shù) 關(guān)鍵字參數(shù)和函數(shù)調(diào)用關(guān)系緊密,函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來(lái)確定傳入的參數(shù)值。 使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時(shí)參數(shù)的順序與聲明時(shí)不一致,因?yàn)?Python 解釋器能夠用參數(shù)名匹配參數(shù)值。
以下實(shí)例在函數(shù) printme() 調(diào)用時(shí)使用參數(shù)名: 實(shí)例(Python 2.0+) #!/usr/bin/python# -*- coding: UTF-8 -*- #可寫(xiě)函數(shù)說(shuō)明def printme( str ): "打印任何傳入的字符串" print str return #調(diào)用printme函數(shù)printme( str = "My string") 以上實(shí)例輸出結(jié)果: My string下例能將關(guān)鍵字參數(shù)順序不重要展示得。
Python 中,函數(shù)的應(yīng)用非常廣泛,比如 input() 、print()、range()、len() 函數(shù)等等,這些都是 Python 的內(nèi)置函數(shù),可以直接使用。
除了可以直接使用的內(nèi)置函數(shù)外, 還支持自定義函數(shù),即將一段有規(guī)律的、可重復(fù)使用的代碼定義成函數(shù),從而達(dá)到一次編寫(xiě)、多次調(diào)用的目的。
通常,函數(shù)可以接收零個(gè)或多個(gè)參數(shù),也可以返回零個(gè)或多個(gè)值。從函數(shù)使用者的角度來(lái)看,函數(shù)就像一個(gè)“黑匣子”,程序?qū)⒘銈€(gè)或多個(gè)參數(shù)傳入這個(gè)“黑匣子”,該“黑匣子”經(jīng)過(guò)一番計(jì)算即可返回零個(gè)或多個(gè)值。
下面程序定義了兩個(gè)函數(shù):
純文本復(fù)制
def my_max(x, y) :# 定義一個(gè)變量z,該變量等于x、y中較大的值
z = x if x > y else y# 返回變量z的值
return z# 定義一個(gè)函數(shù),聲明一個(gè)形參
def say_hi(name) :print("===正在執(zhí)行say_hi()函數(shù)===")
return name + ",您好!"
調(diào)用前面創(chuàng)建的那 2 個(gè)函數(shù),執(zhí)行代碼如下:
a = 6
b = 9
# 調(diào)用my_max()函數(shù),將函數(shù)返回值賦值給result變量
result = my_max(a , b) # ①
print("result:", result)
# 調(diào)用say_hi()函數(shù),直接輸出函數(shù)的返回值
print(say_hi("孫悟空")) # ②
上面程序中,分別在 ① 號(hào)、② 號(hào)代碼處調(diào)用了 my_max() 和 say_hi() 這兩個(gè)函數(shù)。從下面的運(yùn)行結(jié)果可以看出,當(dāng)程序調(diào)用一個(gè)函數(shù)時(shí),既可以把調(diào)用函數(shù)的返回值賦值給指定變量,也可以將函數(shù)的返回值傳給另一個(gè)函數(shù),作為另一個(gè)函數(shù)的參數(shù)。
運(yùn)行上面程序,將可以看到如下運(yùn)行結(jié)果:
result: 9
===正在執(zhí)行say_hi()函數(shù)===
孫悟空,您好!
1.常用內(nèi)置函數(shù):(不用import就可以直接使用) help(obj) 在線(xiàn)幫助, obj可是任何類(lèi)型 callable(obj) 查看一個(gè)obj是不是可以像函數(shù)一樣調(diào)用 repr(obj) 得到obj的表示字符串,可以利用這個(gè)字符串eval重建該對(duì)象的一個(gè)拷貝 eval_r(str) 表示合法的python表達(dá)式,返回這個(gè)表達(dá)式 dir(obj) 查看obj的name space中可見(jiàn)的name hasattr(obj,name) 查看一個(gè)obj的name space中是否有name getattr(obj,name) 得到一個(gè)obj的name space中的一個(gè)name setattr(obj,name,value) 為一個(gè)obj的name space中的一個(gè)name指向vale這個(gè)object delattr(obj,name) 從obj的name space中刪除一個(gè)name vars(obj) 返回一個(gè)object的name space。
用dictionary表示 locals() 返回一個(gè)局部name space,用dictionary表示 globals() 返回一個(gè)全局name space,用dictionary表示 type(obj) 查看一個(gè)obj的類(lèi)型 isinstance(obj,cls) 查看obj是不是cls的instance issubclass(subcls,supcls) 查看subcls是不是supcls的子類(lèi) 類(lèi)型轉(zhuǎn)換函數(shù) chr(i) 把一個(gè)ASCII數(shù)值,變成字符 ord(i) 把一個(gè)字符或者unicode字符,變成ASCII數(shù)值 oct(x) 把整數(shù)x變成八進(jìn)制表示的字符串 hex(x) 把整數(shù)x變成十六進(jìn)制表示的字符串 str(obj) 得到obj的字符串描述 list(seq) 把一個(gè)sequence轉(zhuǎn)換成一個(gè)list tuple(seq) 把一個(gè)sequence轉(zhuǎn)換成一個(gè)tuple dict(),dict(list) 轉(zhuǎn)換成一個(gè)dictionary int(x) 轉(zhuǎn)換成一個(gè)integer long(x) 轉(zhuǎn)換成一個(gè)long interger float(x) 轉(zhuǎn)換成一個(gè)浮點(diǎn)數(shù) complex(x) 轉(zhuǎn)換成復(fù)數(shù) max(。) 求最大值 min(。
) 求最小值 用于執(zhí)行程序的內(nèi)置函數(shù) complie 如果一段代碼經(jīng)常要使用,那么先編譯,再運(yùn)行會(huì)更快。 2.和操作系統(tǒng)相關(guān)的調(diào)用 系統(tǒng)相關(guān)的信息模塊 import sys sys.argv是一個(gè)list,包含所有的命令行參數(shù). sys.stdout sys.stdin sys.stderr 分別表示標(biāo)準(zhǔn)輸入輸出,錯(cuò)誤輸出的文件對(duì)象. sys.stdin.readline() 從標(biāo)準(zhǔn)輸入讀一行 sys.stdout.write("a") 屏幕輸出a sys.exit(exit_code) 退出程序 sys.modules 是一個(gè)dictionary,表示系統(tǒng)中所有可用的module sys.platform 得到運(yùn)行的操作系統(tǒng)環(huán)境 sys.path 是一個(gè)list,指明所有查找module,package的路徑. 操作系統(tǒng)相關(guān)的調(diào)用和操作 import os os.environ 一個(gè)dictionary 包含環(huán)境變量的映射關(guān)系 os.environ["HOME"] 可以得到環(huán)境變量HOME的值 os.chdir(dir) 改變當(dāng)前目錄 os.chdir('d:\\outlook') 注意windows下用到轉(zhuǎn)義 os.getcwd() 得到當(dāng)前目錄 os.getegid() 得到有效組id os.getgid() 得到組id os.getuid() 得到用戶(hù)id os.geteuid() 得到有效用戶(hù)id os.setegid os.setegid() os.seteuid() os.setuid() os.getgruops() 得到用戶(hù)組名稱(chēng)列表 os.getlogin() 得到用戶(hù)登錄名稱(chēng) os.getenv 得到環(huán)境變量 os.putenv 設(shè)置環(huán)境變量 os.umask 設(shè)置umask os.system(cmd) 利用系統(tǒng)調(diào)用,運(yùn)行cmd命令 操作舉例: os.mkdir('/tmp/xx') os.system("echo 'hello' > /tmp/xx/a.txt") os.listdir('/tmp/xx') os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt') os.remove('/tmp/xx/b.txt') os.rmdir('/tmp/xx') 用python編寫(xiě)一個(gè)簡(jiǎn)單的shell #!/usr/bin/python import os, sys cmd = sys.stdin.readline() while cmd: os.system(cmd) cmd = sys.stdin.readline() 用os.path編寫(xiě)平臺(tái)無(wú)關(guān)的程序 os.path.abspath("1.txt") == os.path.join(os.getcwd(), "1.txt") os.path.split(os.getcwd()) 用于分開(kāi)一個(gè)目錄名稱(chēng)中的目錄部分和文件名稱(chēng)部分。
os.path.join(os.getcwd(), os.pardir, 'a', 'a.doc') 全成路徑名稱(chēng). os.pardir 表示當(dāng)前平臺(tái)下上一級(jí)目錄的字符 .. os.path.getctime("/root/1.txt") 返回1.txt的ctime(創(chuàng)建時(shí)間)時(shí)間戳 os.path.exists(os.getcwd()) 判斷文件是否存在 os.path.expanduser('~/dir') 把~擴(kuò)展成用戶(hù)根目錄 os.path.expandvars('$PATH') 擴(kuò)展環(huán)境變量PATH os.path.isfile(os.getcwd()) 判斷是否是文件名,1是0否 os.path.isdir('c:\Python26\temp') 判斷是否是目錄,1是0否 os.path.islink('/home/huaying/111.sql') 是否是符號(hào)連接 windows下不可用 os.path.ismout(os.getcwd()) 是否是文件系統(tǒng)安裝點(diǎn) windows下不可用 os.path.samefile(os.getcwd(), '/home/huaying') 看看兩個(gè)文件名是不是指的是同一個(gè)文件 os.path.walk('/home/huaying', test_fun, "a.c") 遍歷/home/huaying下所有子目錄包括本目錄,對(duì)于每個(gè)目錄都會(huì)調(diào)用函數(shù)test_fun. 例:在某個(gè)目錄中,和他所有的子目錄中查找名稱(chēng)是a.c的文件或目錄。 def test_fun(filename, dirname, names): //filename即是walk中的a.c dirname是訪(fǎng)問(wèn)的目錄名稱(chēng) if filename in names: //names是一個(gè)list,包含dirname目錄下的所有內(nèi)容 print os.path.join(dirname, filename) os.path.walk('/home/huaying', test_fun, "a.c") 文件操作 打開(kāi)文件 f = open("filename", "r") r只讀 w寫(xiě) rw讀寫(xiě) rb讀二進(jìn)制 wb寫(xiě)二進(jìn)制 w+寫(xiě)追加 讀寫(xiě)文件 f.write("a") f.write(str) 寫(xiě)一字符串 f.writeline() f.readlines() 與下read類(lèi)同 f.read() 全讀出來(lái) f.read(size) 表示從文件中讀取size個(gè)字符 f.readline() 讀一行,到文件結(jié)尾,返回空串. f.readlines() 讀取全部,返回一個(gè)list. list每。
Python在設(shè)計(jì)上堅(jiān)持了清晰劃一的風(fēng)格,這使得Python成為一門(mén)易讀、易維護(hù),并且被大量用戶(hù)所歡迎的、用途廣泛的語(yǔ)言。
接下來(lái),記錄一些本人自主學(xué)習(xí)Python的一些筆記:all 一個(gè)可迭代對(duì)象的所有元素都為真,則返回True print(all([1,2,3])) # True print(all([0,1,2])) # False12 any 一個(gè)可迭代對(duì)象中只要有一個(gè)元素為真,則返回True print(any([1,0,0])) # True print(any([0])) # False12 bin 將一個(gè)十進(jìn)制數(shù)字轉(zhuǎn)化成一個(gè)二進(jìn)制數(shù)字的字符串 print(bin(2)) # 0b101 hex 將一個(gè)十進(jìn)制數(shù)字轉(zhuǎn)化成一個(gè)十六進(jìn)制數(shù)字的字符串 print(hex(2)) # 0x21 oct 將一個(gè)十進(jìn)制數(shù)字轉(zhuǎn)化成一個(gè)八進(jìn)制數(shù)字的字符串 print(oct(8)) # 0o21 callable 判斷一個(gè)對(duì)象是否是可以被調(diào)用的,那么什么樣才是可被調(diào)用的呢,即類(lèi)似于“test()”這樣的寫(xiě)法。函數(shù)與類(lèi)皆可以被調(diào)用 b = 2 def func():pass print(callable(b),callable(func)) # False True1234 exec 將一串代碼字符串,以代碼的形式執(zhí)行 code = ''' n = 0 while n < 10:print(n) n+=1''' exec(code)1234567 執(zhí)行結(jié)果:eval 將一串基本數(shù)據(jù)類(lèi)型的字符串,轉(zhuǎn)化成基本數(shù)據(jù)類(lèi)型 s_list = "[1,2,3,4]" l = eval(s_list) # 此時(shí)l已經(jīng)是一個(gè)列表對(duì)象了 print(l[0]) # 1123 dir 查看某個(gè)類(lèi)型下的所有方法 l = [1,2,3] print(dir(l)) # 此時(shí)將會(huì)打印列表的所有方法12 divmod 獲取兩個(gè)數(shù)相除后的商和余數(shù) print(divmod(5,2)) # 結(jié)果:(2,1)。
5除以2得到商2,余數(shù)為11 max 獲取某個(gè)可迭代對(duì)象的最大值 print(max([4,3,2,8])) # 結(jié)果:81 min 獲取某個(gè)可迭代對(duì)象的最小值 print(min([4,3,2,8])) # 結(jié)果:21 sum 獲取某個(gè)可迭代對(duì)象的和 print(sum([4,3,2,8])) # 結(jié)果:171 pow(a,b) 獲取a的b次方 print(pow(3,3)) # 結(jié)果:271 type 查看數(shù)據(jù)類(lèi)型 print(type("abc")) # 結(jié)果:1 round 保留小數(shù)。注意:它的保留方式是向下保留,并不是四舍五入 print(round(1.345,2)) # 結(jié)果:1.341 filter 將一個(gè)可迭代對(duì)象按某種特定方式過(guò)濾,生成一個(gè)新的可迭代對(duì)象 f = filter(lambda x : x > 5,range(10)) for index in f:print(index) # 打印結(jié)果:6,7,8,9123 map 將一個(gè)可迭代對(duì)象按某種特定方式處理,生成一個(gè)新的可迭代對(duì)象。
效果與列表生成式一樣 m = map(lambda x : x * 2,range(10)) for index in m:print(index)# 列表生成式寫(xiě)法 l = [x * 2 for x in range(10)] for index in l:print(index)。
4.6. 定義函數(shù)
我們可以創(chuàng)建一個(gè)用來(lái)生成指定邊界的斐波那契數(shù)列的函數(shù):
>>> def fib(n): # write Fibonacci series up to n
"""Print a Fibonacci series up to n."""
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
>>> # Now call the function we just defined:
fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
關(guān)鍵字 def 引入了一個(gè)函數(shù) 定義。在其后必須跟有函數(shù)名和包括形式參數(shù)的圓括號(hào)。函數(shù)體語(yǔ)句從下一行開(kāi)始,必須是縮進(jìn)的。
函數(shù)體的第一行語(yǔ)句可以是可選的字符串文本,這個(gè)字符串是函數(shù)的文檔字符串,或者稱(chēng)為 docstring。(更多關(guān)于 docstrings 的信息請(qǐng)參考 文檔字符串) 有些工具通過(guò) docstrings 自動(dòng)生成在線(xiàn)的或可打印的文檔,或者讓用戶(hù)通過(guò)代碼交互瀏覽;在你的代碼中包含 docstrings 是一個(gè)好的實(shí)踐,讓它成為習(xí)慣吧。
函數(shù) 調(diào)用 會(huì)為函數(shù)局部變量生成一個(gè)新的符號(hào)表。確切的說(shuō),所有函數(shù)中的變量賦值都是將值存儲(chǔ)在局部符號(hào)表。變量引用首先在局部符號(hào)表中查找,然后是包含函數(shù)的局部符號(hào)表,然后是全局符號(hào)表,最后是內(nèi)置名字表。因此,全局變量不能在函數(shù)中直接賦值(除非用 global 語(yǔ)句命名),盡管他們可以被引用。
函數(shù)引用的實(shí)際參數(shù)在函數(shù)調(diào)用時(shí)引入局部符號(hào)表,因此,實(shí)參總是 傳值調(diào)用 (這里的 值 總是一個(gè)對(duì)象 引用 ,而不是該對(duì)象的值)。[1] 一個(gè)函數(shù)被另一個(gè)函數(shù)調(diào)用時(shí),一個(gè)新的局部符號(hào)表在調(diào)用過(guò)程中被創(chuàng)建。
一個(gè)函數(shù)定義會(huì)在當(dāng)前符號(hào)表內(nèi)引入函數(shù)名。函數(shù)名指代的值(即函數(shù)體)有一個(gè)被 Python 解釋器認(rèn)定為 用戶(hù)自定義函數(shù) 的類(lèi)型。 這個(gè)值可以賦予其他的名字(即變量名),然后它也可以被當(dāng)作函數(shù)使用。這可以作為通用的重命名機(jī)制:
>>> fib
>>> f = fib
>>> f(100)
0 1 1 2 3 5 8 13 21 34 55 89
如果你使用過(guò)其他語(yǔ)言,你可能會(huì)反對(duì)說(shuō):fib 不是一個(gè)函數(shù),而是一個(gè)方法,因?yàn)樗⒉环祷厝魏沃怠J聦?shí)上,沒(méi)有 return 語(yǔ)句的函數(shù)確實(shí)會(huì)返回一個(gè)值,雖然是一個(gè)相當(dāng)令人厭煩的值(指 None )。這個(gè)值被稱(chēng)為 None (這是一個(gè)內(nèi)建名稱(chēng))。如果 None 值是唯一被書(shū)寫(xiě)的值,那么在寫(xiě)的時(shí)候通常會(huì)被解釋器忽略(即不輸出任何內(nèi)容)。如果你確實(shí)想看到這個(gè)值的輸出內(nèi)容,請(qǐng)使用 print() 函數(shù):
Python列表定義:按特定順序排列的元素組成。在Python中,用方括號(hào)[]來(lái)表示列表,并用逗號(hào)來(lái)分隔其中的元素。Python列表是編程中很常見(jiàn)的數(shù)據(jù)類(lèi)型 。
列表是一種可修改的集合類(lèi)型,其元素可以是數(shù)字、string等基本類(lèi)型,也可以是列表、元組、字典等集合對(duì)象,甚至可以是自定義的類(lèi)型。其定義方式如下:>>> nums = [1,2,3,4]>>> type(nums)>>> print nums[1, 2, 3, 4]>>> strs = ["hello","world"]>>> print strs['hello', 'world']>>> lst = [1,"hello",False,nums,strs]>>> type(lst)>>> print lst[1, 'hello', False, [1, 2, 3, 4], ['hello', 'world']]
下面我們來(lái)看一下列表中有哪些常見(jiàn)的方法:count():統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)。index():從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置。append():在列表末尾添加新對(duì)象。extend():在列表末尾一次性追加另一個(gè)序列的多個(gè)值。insert():在列表的指定位置插入對(duì)象。pop():移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值。remove():移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)。reverse():將列表中的元素反向,不重新拷貝一個(gè)列表。reversed():將列表中的元素反向,重新拷貝一個(gè)列表。sort():將列表中的元素排序,不重新拷貝一個(gè)列表。sortd():將列表中的元素排序,重新拷貝一個(gè)列表。copy():淺拷貝,只是給原來(lái)的列表貼上了一個(gè)新標(biāo)簽,對(duì)于一個(gè)復(fù)雜對(duì)象的子對(duì)象并不會(huì)完全復(fù)制,如果有子列表,改變?cè)瓉?lái)的值,新的拷貝對(duì)象也會(huì)改變。deepcopy():深拷貝,將復(fù)雜對(duì)象的每一層復(fù)制一個(gè)單獨(dú)的個(gè)體出來(lái)。就是完全拷貝。常見(jiàn)內(nèi)置函數(shù):max()、min()、sum()、len()、all()、any()、zip()、enumerate()
python函數(shù)是指組織好的、可重復(fù)使用的、用來(lái)實(shí)現(xiàn)單一或相關(guān)聯(lián)功能的代碼段。
python函數(shù)包含系統(tǒng)中自帶的一些函數(shù)、第三方函數(shù)、以及用戶(hù)自定義的函數(shù)。步驟/方法打開(kāi)IDLE python GUI,點(diǎn)擊開(kāi)始-所有程序-python2.7-IDLE python GUI,或者直接進(jìn)入dos環(huán)境,或者其他的IDLE。
首先,創(chuàng)建一個(gè)簡(jiǎn)單的自定義函數(shù),定義為K函數(shù)。假如x==Kill,那么,就可以代入剛才所創(chuàng)建的K函數(shù),最后返回一個(gè)語(yǔ)句,x為任意字符,空白字符也可以。
要注意的是,用def創(chuàng)建函數(shù)的時(shí)候,k(x)括號(hào)里面是不用雙引號(hào)的,而調(diào)用自定義函數(shù)的時(shí)候,在括號(hào)了就要加上雙引號(hào)。上面的定義函數(shù)比較簡(jiǎn)單,只用了一個(gè)print輸出語(yǔ)句,現(xiàn)在,定義一個(gè)累加的函數(shù),就要用到while函數(shù)和if函數(shù)了。
A函數(shù)是用來(lái)計(jì)算累加的,其中用到了一個(gè)while循環(huán)和if判斷,x為自定義變量,假如現(xiàn)在X為100,也就是說(shuō)此函數(shù)計(jì)算1+2+3+。+100的和。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥(niǎo). 頁(yè)面生成時(shí)間:4.167秒