欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 專題一 函數(shù)的基礎(chǔ)知識

 更新時間:2017年03月16日 17:08:43   作者:Eastmount  
本文從系統(tǒng)提供的內(nèi)部函數(shù)、第三方提供函數(shù)庫+簡單爬出代碼及安裝httplib2模塊過程和用戶自定函數(shù)三個方面進行講述。具有很好的參考價值。下面跟著小編一起來看下吧

最近才開始學(xué)習Python語言,但就發(fā)現(xiàn)了它很多優(yōu)勢(如語言簡潔、網(wǎng)絡(luò)爬蟲方面深有體會).我主要是通過《Python基礎(chǔ)教程》和"51CTO學(xué)院 智普教育的python視頻"學(xué)習,在看視頻中老師講述函數(shù)知識的時候覺得非常不錯,所以就寫了第一篇Python學(xué)習的文章分享給大家.主要內(nèi)容:

1.Python安裝與基本輸入輸出,print()函數(shù)和raw_input()函數(shù)簡單用法.

2.我根據(jù)視頻中學(xué)到的知識,講解函數(shù)的基本知識:

(1).系統(tǒng)提供內(nèi)部函數(shù):字符串函數(shù)庫、數(shù)學(xué)函數(shù)庫、網(wǎng)絡(luò)編程函數(shù)庫、OS函數(shù)庫

(2).第三方提供函數(shù)庫:講解如何安裝httplib2第三方函數(shù)庫,再做了個簡單的網(wǎng)頁爬蟲例子

(3).用戶自定義函數(shù):講解無返回類型、有形參、預(yù)設(shè)值參數(shù)等自定義函數(shù)

3.同時網(wǎng)絡(luò)編程中與C#以前學(xué)過的進行了簡單對比,發(fā)現(xiàn)python確實有很多優(yōu)點,而且很方便強大.

PS:文章中引用了很多視頻中的知識、書籍知識和自己的知識,感謝那些作者和老師,希望文章對大家有所幫助,才開始學(xué)習python知識,如果文章中有錯誤或不足之處,還請海涵,也希望大家提出意見與君共勉.勿噴~

一. Python安裝及輸入輸出函數(shù)

python解釋器在Linux中可以內(nèi)置使用安裝,windows中需要去www.python.org官網(wǎng)downloads頁面下載(如python-2.7.8.amd64.msi),安裝Python集成開發(fā)環(huán)境(Python Integrated Development Environment,IDLE)即可.運行程序輸入">>>print 'hello world'"則python解釋器會打印輸出"hello world"字符串. 如下:

然后講述Python程序的基本框架是"輸入-處理-輸出",而輸入輸出函數(shù)如下:

1.print()函數(shù)

函數(shù)用于輸出或打印整型、浮點型、字符串數(shù)據(jù)至屏幕,如print(3)、print(12.5)、print('H').它輸出變量格式"print(x)或print x",而且可以輸出多個變量"print x,y,z".并且支持格式化輸出數(shù)據(jù),調(diào)用format()函數(shù),其格式為:

print(format(val,format_modifier)) 其中val表示值,format_modifier表示格式字.

#簡單輸出 
>>> print(12.5) 
12.5 
>>> print("eastmount") 
eastmount 
#輸出"123.46",6.2表示輸出6位,小數(shù)點后精度2位,輸出最后一位6是四舍五入的結(jié)果 
>>> print(format(123.45678,'6.2f')) 
123.46 
#輸出"口口口123",采用右對齊補空格方式輸出總共6位 
>>> print(format(123.45678,'6.0f')) 
 123 
#輸出"123.456780000"小數(shù)點后面9位,超出范圍會自動補0 
>>> print(format(123.45678,'6.9f')) 
123.456780000 
#輸出"34.56%"表示打印百分率 
>>> print(format(0.3456,'.2%')) 
34.56% 

2.raw_input()函數(shù)

內(nèi)建函數(shù)從sys.stdin接受輸入,讀取輸入語句并返回string字符串.輸入以換行符結(jié)束,通過help(raw_input)可以查找?guī)椭?常見格式為:

s = raw_input([prompt]) 參數(shù)[prompt]可選,用于提示用戶輸入.

#輸入函數(shù) 
>>> str1 = raw_input("please input a string:") 
please input a string:I love you 
>>> print(str1) 
I love you 
#查看str1數(shù)據(jù)類型 
>>> type(str1) 
<type 'str'> 

注意raw_input()與input()的區(qū)別:(1).input支持合法python表格式"abc",字符串必須用引號括起,否則會報錯"NameError: name 'abc' is not defined",而raw_input()任何類型輸入都可接受; (2).raw_input()將所有輸入作為字符串,返回string,而input()輸入純數(shù)字時具有自己的特性,返回輸入的數(shù)字類型int或float.舉例解釋如下:

#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純數(shù)字 數(shù)據(jù)類型 
>>> weight = input("weight:") 
weight:12.5 
>>> type(weight) 
<type 'float'> 
#raw_input 數(shù)據(jù)類型均為str 
>>> age = raw_input("age:") 
age:20 
>>> type(age) 
<type 'str'> 

二. 函數(shù)之系統(tǒng)提供內(nèi)部函數(shù)

python提供的系統(tǒng)內(nèi)部庫函數(shù)主要講述一下四種類型:(引自視頻,只簡單介紹)

1.字符串函數(shù)庫

通過help(str)可以查詢字符串函數(shù)庫,其中查詢過程中"-More-"輸入回車實現(xiàn)滾動信息,輸出"q"退出幫助(Quit).字符串函數(shù)大家都比較熟悉,無論C\C++\C#\Java都學(xué)過很多,而且基本大同小異.如:

islower()函數(shù)判斷字符串是否大小寫,一個大寫返回False.前面使用的format()函數(shù)、求字符串長度len()函數(shù)均屬于字符串函數(shù)庫,help(str.replace)可以查詢具體函數(shù)用法,該函數(shù)用于新字符串替換舊字符串.

#判斷字符串是否小寫 
>>> str1 = "Eastmount" 
>>> str1.islower() 
False 
#字符串替換 
>>> str2 = 'adfababdfab' 
>>> str2.replace('ab','AB') 
'adfABABdfAB' 
#字符串求長度 
>>> print(len(str2)) 
11 
>>> 

2.數(shù)學(xué)函數(shù)庫

使用數(shù)學(xué)函數(shù)庫時需要注意的是導(dǎo)入庫"import math",該庫中函數(shù)我們也非常熟悉,如sin()求正弦,cos()求余弦,pow(x,y)計算x的y次冪,如pow(3,4)=3*3*3*3,python中也可以使用3**4表示.help(math)中可以查看詳細信息,而且?guī)熘卸x了兩個常數(shù)DATA:

e = 2.718281... pi = 3.14159265...

#導(dǎo)入math庫 
>>> import math 
>>> print math.pi 
3.14159265359 
#計算sin30度 
>>> val = math.sin(math.pi/6) 
>>> print val 
0.5 
#pow函數(shù) 
>>> 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.網(wǎng)絡(luò)編程庫

系統(tǒng)提供內(nèi)部庫函數(shù)中網(wǎng)絡(luò)編程庫,我此處僅僅舉個簡單例子,socket(套接字網(wǎng)絡(luò)編程)獲取主機ip地址這是非常常見的運用,我將與C#網(wǎng)絡(luò)編程進行簡單對比.后面的博文中將詳細講述python網(wǎng)絡(luò)編程.

>>> import socket 
>>> baiduip = socket.gethostbyname('www.baidu.com') 
>>> print baiduip 
61.135.169.125 

其中socket編程很常用,gethostbyname()返回指定主機ip,而C#中獲取百度網(wǎng)址的ip地址代碼如下所示.代碼中可能會出現(xiàn)"警告:Dns.GetHostByName()函數(shù)已過時",可替換為IPHostEntry myHost = Dns.GetHostEntry(www.baidu.com).輸出:

61.135.169.121

61.134.169.125

//引用新命名空間 
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.操作系統(tǒng)(OS)函數(shù)庫

操作系統(tǒng)庫函數(shù)引用"import os",舉例獲取當前工作路徑和先死當前路徑下的文件和目錄.使用os.system("cls")可以實現(xiàn)清屏功能.安裝python目錄Lib文件夾下含有很多py庫文件供使用.

>>> 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'] 
>>> 

三. 函數(shù)之第三方提供函數(shù)庫及安裝httplib2模塊過程

(一).安裝第三方函數(shù)庫httplib2過程

Python中第三方開源項目中提供函數(shù)庫供我們使用,比如使用httplib2庫函數(shù).在Linux中直接使用"easy_install httplib2"搜索自動安裝,Windows下python開發(fā)工具IDLE里安裝httplib2模塊的過程如下(其他模塊類似).

1.下載httplib2模塊"https://code.google.com/p/httplib2/"到指定目錄,解壓壓縮包"httplib2_0.8.zip"到某目錄下,如果該網(wǎng)址google訪問失敗,可以到此處下載:

2.配置python運行環(huán)境

右鍵"計算機"->"屬性"->在"系統(tǒng)"中選擇"高級系統(tǒng)設(shè)置"->在"系統(tǒng)屬性"中"高級"選擇"環(huán)境變量"

在系統(tǒng)環(huán)境變量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庫函數(shù)沒有安裝成功,"import httplib2"會提示錯誤"ImportError: No module named httplib2".否則安裝成功,舉例如下.

import httplib2 
#獲取HTTP對象 
h = httplib2.Http() 
#發(fā)出同步請求并獲取內(nèi)容 
resp, content = h.request("http://www.csdn.net/") 
#顯示返回頭信息 
print resp 
#顯示網(wǎng)頁相關(guān)內(nèi)容 
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'} 

(二).簡單網(wǎng)頁爬蟲示例

使用第三方函數(shù)庫時的具體格式為module_name.method(parametes) 第三方函數(shù)名.方法(參數(shù)).       

講述一個引用web庫,urllib庫訪問公網(wǎng)上網(wǎng)頁,webbrowser庫調(diào)用瀏覽器操作,下載csdn官網(wǎng)內(nèi)容并通過瀏覽器顯示的實例.

import 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并在瀏覽器中打開下載的靜態(tài)網(wǎng)頁.引用import webbrowser as web使用web,也可以直接引用,使用時"module_name.method"即可.

content = urllib.urlopen(url).read()表示打開url并讀取賦值

open("soso.html","w").write(content)表示在python安裝目錄寫靜態(tài)soso.html文件

web.open_new_tab("soso.html")表示打開該靜態(tài)文件新標簽.

同樣可以使用web.open_new_tab('http://www.soso.com')直接在瀏覽器打開動態(tài)網(wǎng)頁.效果如下圖所示:

四. 函數(shù)之自定義函數(shù)

1.無返回值自定義函數(shù)

其基本語法格式如下:

 def function_name([parameters]):  函數(shù)名([參數(shù)]),其中參數(shù)可有可無
 (TAB) statement1
 (TAB) statement2
  ...

注意:

(1).自定義函數(shù)名后面的冒號(:)不能省略,否則報錯"invalid syntax",而且無需像C語言一樣加{};

(2).函數(shù)里每條語句前都有縮進TAB,否則會報錯"There's an error in your programs:expected an indented block",它的功能相當于區(qū)分函數(shù)里的語句與函數(shù)外的語句.

舉例:打開IDLE工具->點擊欄"File"->New File新建文件->命名為test.py文件,在test文件里添加代碼如下.

def 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.輸出結(jié)果如下圖所示,其中fun1()函數(shù)無形參自定義函數(shù),fun2(val1,val2)是有形參自定義函數(shù),fun2(8,15)為函數(shù)的調(diào)用,實參8和15.

2.有返回值自定義函數(shù)

其基本語法格式如下:

  def funtion_name([para1,para2...paraN])
 statement1
 statement2
 ....
 return value1,value2...valueN

返回值支持一個或多個返回,需要注意的是自定義函數(shù)有返回值,主調(diào)函數(shù)就需要接受值(接受返回的結(jié)果).同時在定義變量時可能sum這些可能是關(guān)鍵字(注意顏色),最好使用不是關(guān)鍵字的變量.舉例:

def 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 

輸出結(jié)果如下,其中需要注意的是參數(shù)一一對應(yīng),在除法中2/10=0,**冪運算2的10次方=1024.而使用re=fun3(2,10)直接輸出的結(jié)果成為元組,后面會詳細講述,(12,-8,20,0,1024)元組中re[0]存儲12,re[1]存儲-8,依次~

2 10 
the result are 12 -8 20 0 1024 
2 10 
(12, -8, 20, 0, 1024) 

3.自定義函數(shù)參數(shù)含預(yù)定義

預(yù)設(shè)值的基本格式如下:

 def function_name(para1,para2...parai=default1...paran=defaultn)
 statement1
 statement2
 ...
 return value1,value2...valuen

其中需要注意的是預(yù)定義值得參數(shù)不能先于無預(yù)定義值參數(shù),舉個例子講解.

def 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 

輸出結(jié)果如下圖所示,預(yù)定義的參數(shù)在調(diào)用時,實參可以省略,也可以替換默認定義的預(yù)定義值.

2 3 10 
result1 = 15 
2 3 5 
result2 = 10 

其中如果函數(shù)定義為def fun4(n3=10,n2,n1)就會報錯"non-default argument follows default argument"(沒預(yù)定義的參數(shù)在預(yù)定義參數(shù)的后面),所以定義函數(shù)時需要注意該點.

同時需要注意函數(shù)調(diào)用時的賦值順序問題,最好采用一對一復(fù)制,也可以函數(shù)調(diào)用中給出具體形參進行賦值,但需要注意的是在函數(shù)調(diào)用過程中(使用函數(shù)時),有預(yù)定義值的參數(shù)不能先于無預(yù)定義值參數(shù)被賦值.

如例子中自定義函數(shù)def fun4(n1,n2,n3=10),在調(diào)用時可以:

(1).s=fun4(2,3)省略預(yù)定義參數(shù),它是一對一賦值,其中n1賦值2、n2賦值3、n3賦值10(預(yù)定義)

(2).s=fun4(4,n2=1,n3=12)它也是一對一賦值,而且預(yù)定義值n3替換為12

(3).s=fun4(n2=1,n1=4,n3=15)它的順序與定義函數(shù)沒有對應(yīng),但是調(diào)用時給出具體對應(yīng)也行

下面的情況就會出現(xiàn)所述的"有預(yù)定義值的參數(shù)先于無預(yù)定義值參數(shù)被賦值"錯誤:

(1).s=fun4(n3=12,n2=1,4)此時會報錯"non-keyword arg after keyword arg",它不能指定n1=4,就是沒有指定預(yù)定值n1=4在有預(yù)定值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會賦值多個.

所以,最好還是一一對應(yīng)的調(diào)用函數(shù),平時寫程序沒有這樣去刁難自己,對應(yīng)即可

總結(jié):文章從系統(tǒng)提供的內(nèi)部函數(shù)、第三方提供函數(shù)庫+簡單爬出代碼及安裝httplib2模塊過程和用戶自定函數(shù)三個方面進行講述.文章中如果有錯誤或不足之處,海涵~最后感謝那個視頻老師和上述博主、書籍老師及me.

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • Python中PyQt5可視化界面通過拖拽來上傳文件的實現(xiàn)

    Python中PyQt5可視化界面通過拖拽來上傳文件的實現(xiàn)

    本文主要介紹了Python中PyQt5可視化界面通過拖拽來上傳文件的實現(xiàn),通過構(gòu)建一個可接受拖拽的區(qū)域,并重寫相關(guān)事件處理函數(shù),可以方便地實現(xiàn)文件上傳功能,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 詳解Python網(wǎng)絡(luò)框架Django和Scrapy安裝指南

    詳解Python網(wǎng)絡(luò)框架Django和Scrapy安裝指南

    這篇文章主要介紹了詳解Python網(wǎng)絡(luò)框架Django和Scrapy安裝指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • python實現(xiàn)IOU計算案例

    python實現(xiàn)IOU計算案例

    這篇文章主要介紹了python實現(xiàn)IOU計算案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 使用Python和百度語音識別生成視頻字幕的實現(xiàn)

    使用Python和百度語音識別生成視頻字幕的實現(xiàn)

    這篇文章主要介紹了使用Python和百度語音識別生成視頻字幕,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-04-04
  • BeautifulSoup中find和find_all的使用詳解

    BeautifulSoup中find和find_all的使用詳解

    這篇文章主要介紹了BeautifulSoup中find和find_all的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-12-12
  • python3 adb 獲取設(shè)備序列號的實現(xiàn)

    python3 adb 獲取設(shè)備序列號的實現(xiàn)

    這篇文章主要介紹了python3 adb 獲取設(shè)備序列號的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python web框架 django wsgi原理解析

    python web框架 django wsgi原理解析

    這篇文章主要介紹了python web框架 django wsgi原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值
    2019-08-08
  • python實現(xiàn)刪除文件與目錄的方法

    python實現(xiàn)刪除文件與目錄的方法

    這篇文章主要介紹了python實現(xiàn)刪除文件與目錄的方法,詳細的分析了涉及Python文件操作的各種方法,需要的朋友可以參考下
    2014-11-11
  • Python面向?qū)ο笕筇卣?封裝、繼承、多態(tài)

    Python面向?qū)ο笕筇卣?封裝、繼承、多態(tài)

    這篇文章主要介紹了Python面向?qū)ο笕筇卣?封裝、繼承、多態(tài),下面文章圍繞Python面向?qū)ο笕筇卣鞯南嚓P(guān)資料展開具體內(nèi)容,需要的朋友可以參考一下,希望對大家有所幫助
    2021-11-11
  • Python flask返回中文亂碼的解決方法分享

    Python flask返回中文亂碼的解決方法分享

    有時使用flask返回數(shù)據(jù)會出現(xiàn)帶有中文的時候會顯示成亂碼(ascii)的情況出現(xiàn),所以本文為大家整理了一下解決的方法,需要的小伙伴可以參考一下
    2023-07-07

最新評論