Python函数基础:内置库、第三方库安装与自定义函数详解

小鹿同学
小鹿同学
发布时间:2026-10-13| 2人浏览过
原创

本文系统讲解Python函数的基础知识,涵盖内置函数库(字符串、数学、网络、OS)的使用方法,详细演示httplib2第三方库在Windows下的安装步骤及网页爬虫示例,并深入解析自定义函数的定义、返回值处理及参数预设规则,帮助初学者掌握Python编程核心技能。

近期开始接触Python语言,发现其具备诸多优势,例如语法简洁,在网络爬虫领域表现尤为突出。我的学习主要依托《Python基础教程》以及51CTO学院智普教育的Python视频课程。在观看视频讲解函数知识时,觉得内容非常实用,因此撰写此篇Python学习文章与大家分享。主要内容包括:

1. Python的安装配置及基本输入输出操作,介绍print()函数和raw_input()函数的基础用法。

2. 基于视频所学内容,详细讲解函数的基本概念:

(1). 系统内置函数:包括字符串处理函数库、数学运算函数库、网络编程函数库以及操作系统(OS)函数库。

(2). 第三方函数库:讲解如何安装httplib2第三方库,并演示一个简单的网页爬虫案例。

(3). 用户自定义函数:讲解无返回值、带有形参以及包含预设值参数的自定义函数编写方法。

3. 同时,将网络编程部分与之前学习的C#进行简单对比,发现Python确实具有诸多优点,且操作便捷、功能强大。

注:本文引用了视频课程、书籍资料及个人实践经验,感谢相关作者和讲师,希望文章能对大家有所帮助。由于刚开始学习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程序的基本框架为“输入-处理-输出”,相关的输入输出函数如下:

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

注意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 '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)可以查询具体函数用法,该函数用于用新字符串替换旧字符串。

#判断字符串是否小写 
>>> 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)可以查看详细信息,且库中定义了两个常数:

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

//引用新命名空间 
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 
['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"到某目录下,如果该网址访问失败,可以到此处下载:

2. 配置Python运行环境

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

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

3. 在DOS下安装httplib2

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

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 

输出头信息:

{'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(parameters),即第三方函数名.方法(参数)。

讲述一个引用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')直接在浏览器打开动态网页。效果如下图所示:

四. 函数之自定义函数

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 '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这些可能是关键字(注意颜色高亮),最好使用非关键字的变量。举例:

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 

输出结果如下,其中需要注意的是参数一一对应,在除法中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 'result1 = ',re1 
re2 = fun4(2,3,5) 
print 'result2 = ',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模块过程和用户自定义函数三个方面进行讲述。文章中如果有错误或不足之处,恳请海涵~最后感谢视频老师和上述博主、书籍作者及本人。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。