函数
Python中的函数主要分为三种:
- 内置函数(内置在解释器中的函数)
- 模块函数(定义在(第三方)模块中的函数)
- 用户自定义函数(可以在类中可以在类外)
辨析:函数和方法
函数时指类外定义的“函数”,可以直接用函数名调用
方法时指类中定义的“函数”,必须通过对象名调用
内置函数
内置函数(Bulit-In Function,BIF),已内置在解释器中,直接通过函数名调用
如:type()
查看方法:dir(__builtins__)
- 数学函数
绝对值abs()
最大最小值max() min()
次方pow()
四舍五入round(数,小数点后有效位数)
- 功能函数
强制类型转换int() 等等
查看数据类型type()
判断数据类型isinstance()
查看搜索路径dir()
查看帮助help()
计算长度len()
快速生成序列(迭代器)range(start,stop,step)
判断函数是否可调用callable()
进制转换bin()#10->2 hex()#10->16
模块函数
模块函数,定义在模块中的函数,先import所属模块,后通过模块名调用
模块是一个Python文件,其中可以写类、语句和函数
模块分为内置模块和非内置模块,其中内置模块用C语言编写,内置在解释器中,而非内置模块以.py文件的形式存放在对应包的文件夹下
查看内置模块清单的方法:
import sys
sys.builtin_module_names
模块导入方式:
- 直接导入模块
import 模块名 (as 别名)
- 直接导入函数:
from 模块名 import 函数名
自定义函数
定义
- 单行匿名函数
函数名 = lambda 形参 : 函数返回值
常以另一个函数的参数形式使用,由于返回的是迭代器,要记得强制类型转换 - 使用关键字
def
def fun():
j = 0
print("Hello World!")
def fun2():
printf("Second")
return fun2
Python支持嵌套定义函数,如果内嵌函数fun2()中调用了外围函数中的局部变量(不是全局变量),成为“闭包(closure)”
例中内嵌函数fun2()是局部变量,只有在外围函数fun()中可以调用,既return fun2
,如果没有这个return,那么这个内嵌函数没有办法调用
- 帮助文档
自定义函数也可以设置docString‘’‘ 帮助文档内容 '''
- 返回值
如果没有写return语句,函数默认返回None
Python可以同时返回多个值
实参和形参
函数定义时,形参可以定义为 可选参数 和 必选参数
def fun(x1,*x2,**x3,x4 = 4)
-
可选参数,指已经给出默认值的参数,如x4,在调用时可以不赋值
必选参数,指未给定默认值的参数,*参数和**参数分别以元组 和 字典的形式接收参数,在以上两种参数后的形参称为强制命名参数,既调用时必须用“形参 = 实参”的方式指定参数值
注意:定义时,必选参数在前,可选参数在后 -
实参分为 关键字实参 和 位置实参
关键字实参,既已经指定形参名称的实参
位置实参,既未指定的
同样,要注意位置实参在前,关键字实参在后
参数传递时,不可变对象传递的是值,既形参改变不影响实参,
而可变对象传递是是地址,既实参和形参指向相同的内存空间 -
参数传递时的原则是对号入座,但self,cls等特殊参数不需要另外传递给形参
-
变量的可见性
local:在函数内定义的变量,仅在函数内可见
global:全局变量
nonlocal:用于内嵌函数
(global 和 nonlocal 在声明是必须独占一行)
包
包由多个与同一个功能相关的模块组成,表现形式为含有_init_.py的文件夹
-
包管理器
pip:Python专用包管理器,对应的包服务器为PyPI
conda:支持多种语言的通用包管理器,对应的包服务器为Conda -
基本操作
安装:pip / conda install
查看已安装包:pip / conda list
更新/删除已安装包:
pip install -- upgrade 包名
conda update 包名
-
导入包时,直接
import
实际是执行了包下的__init__.py文件
既不能一次性导入包中所有模块 -
包的安装查看删除操作在命令行和Jupyter Book中都可以进行,但是更新只能在命令行中进行
帮助文档
- 最基本方法:
help()
- iPython中的特殊方法:
查看docString?
(放在前后都行)
查看源代码??
(前提:目标对象使用Python编写,否则与?等效) - 查看简单描述:使用内置属性
_doc_
- 查看某个对象所支持的属性清单:使用内置函数
dir()
- 在Jupyter notebook中,通过( )或( )方法可以让系统自动提示某个对象可以用的属性和方法名