六、Python函數的基本概念


函數的定義 def 函數名(參數): 函數主題句 def的意思相當於define 如果函數直接print,一定要在后面加上個()(如果直接輸出必須有return)。 個人學到這里就感覺Python要比C++寫起來方便的多。 函數的參數: 不止可以加一個 def name(a, b): print "my %s is %s"%(a,b) 參數《==》抽象 對於抽象多參函數: def nec_name(*num): for i in num: print i
這樣num就成為了一種元組類型 參數又分為可選參數和必須的參數:必選參數后面不跟=(沒有默認值),可選參數后面跟=(有默認值)
函數的健壯性: 1、你永遠知道你的函數返回什么 2、返回你想要的結果 ---------------------------------------------------- 習題:
1.定義一個方法 func,該func可以引入任意多的整型參數,結果返回其中最大與最小的值。
2.定義一個方法func,該func可以引入任意多的字符串參數,結果返回(長度)最長的字符串。
3.定義一個方法get_doc(module),module參數為該腳本中導入或定義的模塊對象,該函數返回module的幫助文檔。
例 print get_doc(urllib),則會輸出urllib這個模塊的幫助文檔。
4.定義一個方法get_text(f),f參數為任意一個文件的磁盤路徑,該函數返回f文件的內容。
5.定義一個方法get_dir(folder),folder參數為任意一個文件夾,該函數返回folder文件夾的文件列表。提示(可以了解python的glob模塊)
#coding=utf-8 import glob def Finds(*num):#輸出最大值和最小值 max = num[0] min = num[0] for i in num: if i >= max: max = i if i <= min: min = i print max,min
def func(*str):#定義一個方法func,該func可以引入任意多的字符串參數,結果返回(長度)最長的字符串。 s = list(str) dic = dict([len(x),x] for x in s) return dic[max(dic)]

def get_help(a):#定義一個方法get_doc(module),module參數為該腳本中導入或定義的模塊對象,返回module的幫助文檔。 return help(a)
def get_text(a):#定義一個方法get_text(f),f參數為任意一個文件的磁盤路徑,該函數返回f文件的內容。 f = open(a,'r') s = f.read() return s
def get_dir(a):#定義一個方法get_dir(folder),folder參數為任意一個文件夾,該函數返回folder文件夾的文件列表。 dd = "%s/*.*"% a return dd --------------------------------------------------------------------------------- 命名方式:1、下划線命名法 get_doc 2、駝峰命名法 getDocFromTxt --------------------------------------------------------------------------------- 1 定義一個方法get_num(num),num參數是列表類型,判斷列表里面的元素為數字類型。其他類型則報錯,並且返回一個偶數列表:(注:列表里面的元素為偶數)。
2 定義一個方法get_page(url),url參數是需要獲取網頁內容的網址,返回網頁的內容。提示(可以了解python的urllib模塊)。
3 定義一個方法 func,該func引入任意多的列表參數,返回所有列表中最大的那個元素。
4 定義一個方法get_dir(f),f參數為任意一個磁盤路徑,該函數返回路徑下的所有文件夾組成的列表,如果沒有文件夾則返回"Not dir"。 ---------------------------------- import glob import urllib def getNum(a): Nlist = [] if not isinstance(a,list): return "這不是一個列表類型" for i in a: if not isinstance(i,int): return "這不是一個數字類型" else: if i%2 ==0: Nlist.append(i)
return Nlist
def getUrl(a,b): f = urllib.urlopen(a) r = open(b,'w+') for lines in f.readlines(): r.write(lines)
def getList(*lists): get_list = [] for l in lists: if not isinstance(l,list): return "里面有至少一個非列表" else : get_list.append(l)
return max(max(get_list)) ------------------------------------------------------------- 1、函數的作用域問題 如果函數沒有運行,那么函數里做出的變量改變是不起作用的 2、lambda 3、關於調用多個結構的問題 元組是* 字典是 ** 在引入參數的時候,不同類型的順序不能顛倒 先是位置匹配的參數,再是關鍵字匹配的參數,同樣關鍵字匹配的參數的順序也不能顛倒

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com