搜尋
首頁後端開發Python教學Python函數的基礎知識

Python函數的基礎知識

Mar 17, 2017 am 09:14 AM

本文從系統提供的內部函數、第三方提供函數庫+簡單爬出程式碼及安裝httplib2模組過程和用戶自定函數三個面向進行講述。具有很好的參考價值。下面跟著小編一起來看下吧

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

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

2.我根據影片中學到的知識,講解函數的基本知識:

(1).系統提供內部函數:字串函數庫、數學函數庫、網路程式設計函數庫、OS函數函式庫

(2).第三方提供函式庫:講解如何安裝httplib2第三方函式庫,再做了個簡單的網頁爬蟲範例

(3).使用者自訂函數:講解無返回類型、有形參、預設值參數等自訂函數

3.同時網路程式設計中與C#先前學過的進行了簡單對比,發現python確實有很多優點,而且很方便強大.

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

一. 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函數的基礎知識

Python函數的基礎知識

#然後講述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表示格式字.


#简单输出 
>>> 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]可選,用於提示使用者輸入.


#输入函数 
>>> str1 = raw_input("please input a string:") 
please input a string:I love you 
>>> print(str1) 
I love you 
#查看str1数据类型 
>>> type(str1) 
<type &#39;str&#39;>

#注意raw_input()與input()的區別:(1 ).input支援合法python表格式"abc",字串必須用引號括起,否則會報錯"NameError: name 'abc' is not defined",而raw_input()任何型別輸入都可接受; (2). raw_input()將所有輸入作為字串,傳回string,而input()輸入純數字時具有自己的特性,傳回輸入的數字型別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 &#39;abc&#39; 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 &#39;float&#39;> 
#raw_input 数据类型均为str 
>>> age = raw_input("age:") 
age:20 
>>> type(age) 
<type &#39;str&#39;>

二. 函數之系統提供內部函數

python提供的系統內部函式庫函數主要講述四種型別:(引自影片,只簡單介紹)

1.字串函數庫

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

islower ()函數判斷字串是否大小寫,一個大寫回傳False.前面所使用的format()函數、求字串長度len()函數皆屬於字串函數函式庫,help(str.replace)可以查詢特定函數用法,此函數用於新字串替換舊字串.


#判断字符串是否小写 
>>> str1 = "Eastmount" 
>>> str1.islower() 
False 
#字符串替换 
>>> str2 = &#39;adfababdfab&#39; 
>>> str2.replace(&#39;ab&#39;,&#39;AB&#39;) 
&#39;adfABABdfAB&#39; 
#字符串求长度 
>>> 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...


#导入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网络编程.


>>> import socket 
>>> baiduip = socket.gethostbyname(&#39;www.baidu.com&#39;) 
>>> 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


//引用新命名空间 
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库文件供使用.


>>> import os 
#获取当前工作路径 
>>> current = os.getcwd() 
>>> print current 
G:\software\Program software\Python\python insert 
#获取当前路径下的文件和目录 
>>> dir = os.listdir(current) 
>>> print dir 
[&#39;DLLs&#39;, &#39;Doc&#39;, &#39;h2.txt&#39;, &#39;include&#39;, &#39;Lib&#39;, &#39;libs&#39;, &#39;LICENSE.txt 
&#39;, &#39;NEWS.txt&#39;, &#39;python.exe&#39;, &#39;pythonw.exe&#39;, &#39;README.txt&#39;, &#39;tcl&#39;, &#39;Tools&#39;] 
>>>

三. 函数之第三方提供函数库及安装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运行环境

右键"计算机"->"属性"->在"系统"中选择"高级系统设置"->在"系统属性"中"高级"选择"环境变量"

Python函數的基礎知識

在系统环境变量Path后添加python安装目录"G:\software\Program software\Python\python insert"

Python函數的基礎知識

3.在dos下安装httpLib2

管理员模式运行cmd,利用cd命令进入httplib2_0.8.zip解压目录,输入"python settup.py install",如下图所示安装成功.

Python函數的基礎知識

4.使用httplib2

如果httplib2库函数没有安装成功,"import httplib2"会提示错误"ImportError: No module named httplib2".否则安装成功,举例如下.


import httplib2 
#获取HTTP对象 
h = httplib2.Http() 
#发出同步请求并获取内容 
resp, content = h.request("http://www.csdn.net/") 
#显示返回头信息 
print resp 
#显示网页相关内容 
print content

输出头信息:


{&#39;status&#39;: &#39;200&#39;, &#39;content-length&#39;: &#39;108963&#39;, &#39;content-location&#39;: &#39;http://www.csdn.net/&#39;, .... &#39;Fri, 05 Sep 2014 20:07:24 GMT&#39;, &#39;content-type&#39;: &#39;text/html; charset=utf-8&#39;}

(二).简单网页爬虫示例

使用第三方函数库时的具体格式为module_name.method(parametes) 第三方函数名.方法(参数).       

讲述一个引用web库,urllib库访问公网上网页,webbrowser库调用浏览器操作,下载csdn官网内容并通过浏览器显示的实例.


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并在浏览器中打开下载的静态网页.引用import webbrowser as web使用web,也可以直接引用,使用时"module_name.method"即可.

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')直接在浏览器打开动态网页.效果如下图所示:

Python函數的基礎知識

Python函數的基礎知識

四. 函数之自定义函数

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文件里添加代码如下.


def fun1(): 
 print &#39;Hello world&#39; 
 print &#39;by eastmount csdn&#39; 
print &#39;output&#39; 
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.

Python函數的基礎知識

2.有返回值自定义函数

其基本语法格式如下:


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

返回值支持一个或多个返回,需要注意的是自定义函数有返回值,主调函数就需要接受值(接受返回的结果).同时在定义变量时可能sum这些可能是关键字(注意颜色),最好使用不是关键字的变量.举例:


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 &#39;the result are &#39;,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,依次~


2 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

其中需要注意的是预定义值得参数不能先于无预定义值参数,举个例子讲解.


def fun4(n1,n2,n3=10): 
 print n1,n2,n3 
 n = n1 + n2 + n3 
 return n 
re1 = fun4(2,3) 
print &#39;result1 = &#39;,re1 
re2 = fun4(2,3,5) 
print &#39;result2 = &#39;,re2

输出结果如下图所示,预定义的参数在调用时,实参可以省略,也可以替换默认定义的预定义值.


2 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会赋值多个.

所以,最好還是一一對應的呼叫函數,平時寫程式沒有這樣去刁難自己,對應即可

總結:文章從系統提供的內部函數、第三方提供函數庫+簡單爬出程式碼及安裝httplib2模組過程和用戶自定函數三個面向進行講述.文章中如果有錯誤或不足之處,海涵~最後感謝那個視頻老師和上述博主、書籍老師及me.

以上是Python函數的基礎知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Apr 02, 2025 am 07:12 AM

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何提高jieba分詞在景區評論分析中的準確性?如何提高jieba分詞在景區評論分析中的準確性?Apr 02, 2025 am 07:09 AM

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用