兄弟連學Python(06)---- 函數

來源:互聯網
上載者:User

標籤:新標籤   false   power   error:   csdn   通訊端   dll   function   mos   

一. Python安裝及輸入輸出函數        python解譯器在Linux中可以內建使用安裝,windows中需要去www.python.org官網downloads頁面下載(如python-2.7.8.amd64.msi),安裝Python整合式開發環境(Python Integrated Development Environment,IDLE)即可.運行程式輸入">>>print ‘hello world‘"則python解譯器會列印輸出"hello world"字串. 如下:         然後講述Python程式的基本架構是"輸入-處理-輸出",而輸入輸出函數如下:        1.print()函數        函數用於輸出或列印整型、浮點型、字串資料至螢幕,如print(3)、print(12.5)、print(‘H‘).它輸出變數格式"print(x)或print x",而且可以輸出多個變數"print x,y,z".並且支援格式化輸出資料,調用format()函數,其格式為:        print(format(val,format_modifier)) 其中val表示值,format_modifier表示格式字.[python] view plain copy#簡單輸出  >>> print(12.5)  12.5  >>> print("eastmount")  eastmount  #輸出"123.46",6.2表示輸出6位,小數點後精度2位,輸出最後一位6是四捨五入的結果  >>> print(format(123.45678,‘6.2f‘))  123.46  #輸出"口口口123",採用靠右對齊補空格方式輸出總共6位  >>> print(format(123.45678,‘6.0f‘))     123  #輸出"123.456780000"小數點後面9位,超出範圍會自動補0  >>> print(format(123.45678,‘6.9f‘))  123.456780000  #輸出"34.56%"表示列印百分率  >>> print(format(0.3456,‘.2%‘))  34.56%          2.raw_input()函數        內建函數從sys.stdin接受輸入,讀取輸入語句並返回string字串.輸入以分行符號結束,通過help(raw_input)可以尋找協助,常見格式為:        s = raw_input([prompt]) 參數[prompt]可選,用於提示使用者輸入.[python] view plain copy#輸入函數  >>> str1 = raw_input("please input a string:")  please input a string:I love you  >>> print(str1)  I love you  #查看str1資料類型  >>> type(str1)  <type ‘str‘>          注意raw_input()與input()的區別:(1).input支援合法python表格式"abc",字串必須用引號括起,否則會報錯"NameError: name ‘abc‘ is not defined",而raw_input()任何類型輸入都可接受; (2).raw_input()將所有輸入作為字串,返回string,而input()輸入純數字時具有自己的特性,返回輸入的數字類型int或float.舉例解釋如下:[python] view plain copy#SyntaxError語法錯誤  >>> str1 = input("input:")  input:abc  Traceback (most recent call last):    File "<stdin>", line 1, in <module>    File "<string>", line 1, in <module>  NameError: name ‘abc‘ is not defined  #正確輸入輸出  >>> str1 = input("input:")  input:"I love you"  >>> print str1  I love you  #input純數字 資料類型  >>> weight = input("weight:")  weight:12.5  >>> type(weight)  <type ‘float‘>  #raw_input 資料類型均為str  >>> age = raw_input("age:")  age:20  >>> type(age)  <type ‘str‘>  二. 函數之系統提供內建函式        python提供的系統內部庫函數主要講述一下四種類型:(引自視頻,只簡單介紹)        1.字串函數庫        通過help(str)可以查詢字串函數庫,其中查詢過程中"-More-"輸入斷行符號實現滾動資訊,輸出"q"退出協助(Quit).字串函數大家都比較熟悉,無論C\C++\C#\Java都學過很多,而且基本大同小異.如:        islower()函數判斷字串是否大小寫,一個大寫返回False.前面使用的format()函數、求字串長度len()函數均屬於字串函數庫,help(str.replace)可以查詢具體函數用法,該函數用於新字串替換舊字串.[python] view plain copy#判斷字串是否小寫  >>> str1 = "Eastmount"  >>> str1.islower()  False  #字串替換  >>> str2 = ‘adfababdfab‘  >>> str2.replace(‘ab‘,‘AB‘)  ‘adfABABdfAB‘  #字串求長度  >>> print(len(str2))  11  >>>          2.數學函數庫        使用數學函數庫時需要注意的是匯入庫"import math",該庫中函數我們也非常熟悉,如sin()求正弦,cos()求餘弦,pow(x,y)計算x的y次冪,如pow(3,4)=3*3*3*3,python中也可以使用3**4表示.help(math)中可以查看詳細資料,而且庫中定義了兩個常數DATA:        e = 2.718281... pi = 3.14159265...[python] view plain copy#匯入math庫  >>> import math  >>> print math.pi  3.14159265359  #計算sin30度  >>> val = math.sin(math.pi/6)  >>> print val  0.5  #pow函數  >>> math.pow(3,4)  81.0  >>> 3**4  81  >>> help(math.pow)  Help on built-in function pow in module math:    pow(...)      pow(x, y)        Return x**y (x to the power of y).  >>>          3.網路編程庫        系統提供內部庫函數中網路編程庫,我此處僅僅舉個簡單例子,socket(通訊端網路編程)擷取主機ip地址這是非常常見的運用,我將與C#網路編程進行簡單對比.後面的博文中將詳細講述python網路編程.[python] view plain copy>>> import socket  >>> baiduip = socket.gethostbyname(‘www.baidu.com‘)  >>> print baiduip  61.135.169.125          其中socket編程很常用,gethostbyname()返回指定主機ip,而C#中擷取百度網址的ip地址代碼如下所示.代碼中可能會出現"警告:Dns.GetHostByName()函數已淘汰",可替換為IPHostEntry myHost = Dns.GetHostEntry(www.baidu.com).輸出:        61.135.169.121        61.134.169.125[csharp] view plain copy//引用新命名空間  using System.Net;    namespace GetIp  {      class Program      {          static void Main(string[] args)          {              //擷取DNS主機名稱的DNS資訊              IPHostEntry myHost = Dns.GetHostByName("www.baidu.com");              IPAddress[] address = myHost.AddressList;              for (int index = 0; index < address.Length; index++)              {                  Console.WriteLine(address[index]);              }              Console.ReadKey();              }      }  }          4.作業系統(OS)函數庫        作業系統庫函數引用"import os",舉例擷取當前工作路徑和先死當前路徑下的檔案和目錄.使用os.system("cls")可以實現清屏功能.安裝python目錄Lib檔案夾下含有很多py庫檔案供使用.[csharp] view plain copy>>> import os  #擷取當前工作路徑  >>> current = os.getcwd()  >>> print current  G:\software\Program software\Python\python insert  #擷取當前路徑下的檔案和目錄  >>> dir = os.listdir(current)  >>> print dir  [‘DLLs‘, ‘Doc‘, ‘h2.txt‘, ‘include‘, ‘Lib‘, ‘libs‘, ‘LICENSE.txt  ‘, ‘NEWS.txt‘, ‘python.exe‘, ‘pythonw.exe‘, ‘README.txt‘, ‘tcl‘, ‘Tools‘]  >>>  三. 函數之第三方提供函數庫及安裝httplib2模組過程(一).安裝第三方函數庫httplib2過程        Python中第三方開源項目中提供函數庫供我們使用,比如使用httplib2庫函數.在Linux中直接使用"easy_install httplib2"搜尋自動安裝,Windows下python開發工具IDLE裡安裝httplib2模組的過程如下(其他模組類似).        1.下載httplib2模組"https://code.google.com/p/httplib2/"到指定目錄,解壓壓縮包"httplib2_0.8.zip"到某目錄下,如果該網址google訪問失敗,可以到此處下載:        2.配置python運行環境        右鍵"電腦"->"屬性"->在"系統"中選擇"進階系統設定"->在"系統屬性"中"進階"選擇"環境變數"        在系統內容變數Path後添加python安裝目錄"G:\software\Program software\Python\python insert"        3.在dos下安裝httpLib2        管理員模式運行cmd,利用cd命令進入httplib2_0.8.zip解壓目錄,輸入"python settup.py install",如所示安裝成功.        4.使用httplib2        如果httplib2庫函數沒有安裝成功,"import httplib2"會提示錯誤"ImportError: No module named httplib2".否則安裝成功,舉例如下.看參考更多"Python - 熟悉httplib2"[python] view plain copyimport httplib2  #擷取HTTP對象  h = httplib2.Http()  #發出同步請求並擷取內容  resp, content = h.request("http://www.csdn.net/")  #顯示返回頭資訊  print resp  #顯示網頁相關內容  print content    輸出頭資訊:  {‘status‘: ‘200‘, ‘content-length‘: ‘108963‘, ‘content-location‘: ‘http://www.csdn.net/‘, .... ‘Fri, 05 Sep 2014 20:07:24 GMT‘, ‘content-type‘: ‘text/html; charset=utf-8‘}  (二).簡單網頁爬蟲樣本        使用第三方函數庫時的具體格式為module_name.method(parametes) 第三方函數名.方法(參數).                講述一個引用web庫,urllib庫訪問公網上網頁,webbrowser庫呼叫瀏覽器操作,下載csdn官網內容並通過瀏覽器顯示的執行個體.[python] view plain copyimport urllib  import webbrowser as web  url = "http://www.soso.com"  content = urllib.urlopen(url).read()  open("soso.html","w").write(content)  web.open_new_tab("soso.html")          它會輸出True並在瀏覽器中開啟下載的靜態網頁.引用import webbrowser as web使用web,也可以直接引用,使用時"module_name.method"即可.讀者可以對比我的C#文章"C# 網路編程之網頁簡單下載實現".        content = urllib.urlopen(url).read()表示開啟url並讀取賦值        open("soso.html","w").write(content)表示在python安裝目錄寫靜態soso.html檔案        web.open_new_tab("soso.html")表示開啟該靜態檔案新標籤.        同樣可以使用web.open_new_tab(‘http://www.soso.com‘)直接在瀏覽器開啟動態網頁.效果如所示: 四. 函數之自訂函數        1.無傳回值自訂函數        其基本文法格式如下:                                          def function_name([parameters]):    函數名([參數]),其中參數可有可無                                          (TAB) statement1                                          (TAB) statement2                                                  ...        注意:(1).自訂函數名後面的冒號(:)不能省略,否則報錯"invalid syntax",而且無需像C語言一樣加{};                 (2).函數裡每條語句前都有縮排TAB,否則會報錯"There‘s an error in your programs:expected an indented block",它的功能相當於區分函數裡的語句與函數外的語句.        舉例:開啟IDLE工具->點擊欄"File"->New File建立檔案->命名為test.py檔案,在test檔案裡添加代碼如下.[python] view plain copydef fun1():      print ‘Hello world‘      print ‘by eastmount csdn‘    print ‘output‘  fun1()    def fun2(val1,val2):      print val1      print val2    fun2(8,15)          儲存,在test.py檔案裡點擊Run->Run Module.輸出結果如所示,其中fun1()函數無形參自訂函數,fun2(val1,val2)是有形參自訂函數,fun2(8,15)為函數的調用,實參8和15.        2.有傳回值自訂函數        其基本文法格式如下:                                         def funtion_name([para1,para2...paraN])                                               statement1                                               statement2                                                    ....                                               return value1,value2...valueN        傳回值支援一個或多個返回,需要注意的是自訂函數有傳回值,主調函數就需要接受值(接受返回的結果).同時在定義變數時可能sum這些可能是關鍵字(注意顏色),最好使用不是關鍵字的變數.舉例:[python] view plain copydef fun3(n1,n2):      print n1,n2      n = n1 + n2      m = n1 - n2      p = n1 * n2      q = n1 / n2      e = n1 ** n2      return n,m,p,q,e    a,b,c,d,e = fun3(2,10)  print ‘the result are ‘,a,b,c,d,e    re = fun3(2,10)  print re          輸出結果如下,其中需要注意的是參數一一對應,在除法中2/10=0,**冪運算2的10次方=1024.而使用re=fun3(2,10)直接輸出的結果成為元組,後面會詳細講述,(12,-8,20,0,1024)元組中re[0]儲存12,re[1]儲存-8,依次~[python] view plain copy2 10  the result are  12 -8 20 0 1024  2 10  (12, -8, 20, 0, 1024)          3.自訂函數參數含預定義        預設值的基本格式如下:                                             def function_name(para1,para2...parai=default1...paran=defaultn)                                                    statement1                                                    statement2                                                          ...                                                    return value1,value2...valuen        其中需要注意的是預定義值得參數不能先於無預定義值參數,舉個例子講解.[python] view plain copydef fun4(n1,n2,n3=10):      print n1,n2,n3      n = n1 + n2 + n3      return n    re1 = fun4(2,3)  print ‘result1 = ‘,re1  re2 = fun4(2,3,5)  print ‘result2 = ‘,re2          輸出結果如所示,預定義的參數在調用時,實參可以省略,也可以替換預設定義的預定義值.[python] view plain copy2 3 10  result1 =  15  2 3 5  result2 =  10          其中如果函數定義為def fun4(n3=10,n2,n1)就會報錯"non-default argument follows default argument"(沒預定義的參數在預定義參數的後面),所以定義函數時需要注意該點.        同時需要注意函數調用時的賦值順序問題,最好採用一對一複製,也可以函數調用中給出具體形參進行賦值,但需要注意的是在函數調用過程中(使用函數時),有預定義值的參數不能先於無預定義值參數被賦值.        如例子中自訂函數def fun4(n1,n2,n3=10),在調用時可以:        (1).s=fun4(2,3)省略預定義參數,它是一對一賦值,其中n1賦值2、n2賦值3、n3賦值10(預定義)        (2).s=fun4(4,n2=1,n3=12)它也是一對一賦值,而且預定義值n3替換為12        (3).s=fun4(n2=1,n1=4,n3=15)它的順序與定義函數沒有對應,但是調用時給出具體對應也行        下面的情況就會出現所述的"有預定義值的參數先於無預定義值參數被賦值"錯誤:        (1).s=fun4(n3=12,n2=1,4)此時會報錯"non-keyword arg after keyword arg",它不能指定n1=4,就是沒有指定預定值n1=4在有預定值n3=12,n2=1之後,如果改成s=fun4(4,n2=1,n3=12)或s=fun4(4,n3=12,n2=1)即可.        (2).s=fun4(4,n1=2)此時也會報錯"TypeError: fun4() got multiple values for keyword argument ‘n1‘",它不能指定n1=2&n2=4,而是n1會賦值多個.        所以,最好還是一一對應的調用函數,平時寫程式沒有這樣去刁難自己,對應即可        [

兄弟連學Python(06)---- 函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.