作用:
使用函数可以加强代码的复用性,提高程序编写的效率
调用:
函数创建成功后使用的过程
语法:
def 函数名([参数列表]):
“文档字符串”
函数体/若干语句
函数分类:
参数列表
圆括号内是形式参数列表,有多个参数则使用逗号隔开
形式参数不需要声明类型,也不需要指定函数返回值类型
无参数,也必须保留空括号
实参列表必须与形参列表一一对应
Return返回值
如果函数体中包含return语句,则结束函数执行并返回值
如果函数体中不包含return语句,则返回None值
定义者来分类
系统
python官方定义好的,内置到cpython解释器内部的
第三方
(公司、组织、个人)
自定义的
全局变量(local 本地变量):
在python中,定义在py文件的变量,叫做全局变量
特点:在代码运行时,变量始终有效(不是手动回收)
局部变量:
定义在函数中的变量叫做局部变量,当函数被垃圾机制回收,该变量
也会被回收掉,
局部变量的作用域也只有在函数内有效
在函数外面不能访问到函数内部定义变量(局部变量)
反过来说,在函数内部可以访问本地变量(全局变量)
函数使用全局变量的注意点:
如果一定要在函数中操作全局变量,使用global关键字来申明
函数的调用过程:
函数调用本质就是压栈
调用完成后会进行弹栈
注意:在若数据类型语言中,万物皆对象,函数也是对象
匿名函数
没有名称的函数,称为匿名函数
function 函数([参数列表]) {
// 代码块
xxx
xxx
return 返回值;
}
函数([参数列表])
匿名函数
function ([参数列表]) {
// 代码块
xxx;xxx;
return 返回值;
}
def 函数名称(参数列表):
# 函数体
python在早期不支持早期不支持匿名函数的
lambda表达式
python中lambda的怎么书写:
lambda [参数列表]: 代码 # 如果需要返回,则不需要写返回值
在python中,lambda代指一个没有名称的函数(匿名函数)
一般lambda,也就是匿名函数,一般表示简单的函数(一行或者两行)
匿名函数的优点:简化代码
缺点:降低代码的可读性,增加了代码维护成本
偏函数
在python中,我们有时候需要调用某个函数,如果想讲该函数的中的某个参数设置一个固定值
那么久可以使用偏函数的东东
functools 系统内置模块
import functools
from functools import partial
new_int = partial(int, base=8)
partial(函数名称, 参数=固定的值 ... )
简化操作
全局函数
round
abs
max
min
input
print
type
str
tuple
list
set
dict
bin
ord
oct
hex
ascii
python的常见内置模块
|-- os、os.path
|-- sys
|-- random
|-- math
|-- base64
|-- hashlib
|-- hmac
|-- time
|-- datetime
……
1、什么是模块?
定义的xx.py文件就是模块
2、模块的分类
通过模块的创建者
|-- 系统内置模块
|-- uuid、os、math、random
python官方提供的cpython解释器提供的模块
|-- 第三方模块
|-- 程序员、组织、公司
第三方模块模块需要使用的,首先需要安装模块
|-- 在线安装(简单方便,前提条件是必须有网)
pip install module_name
|-- 离线安装包安装
1、先下载离线安装包(xxx.zip)
2、解压安装包
3、安装中肯定 setup.py
4、cmd:python install setup.py
|-- 自定义模块
xxx.py
3、模块的导入问题
使用import关键字导入
import 模块名称
import 模块名称 as alias(别名) # 使用as做别名
import xx.xx
import xx.xx as alias
from 包 import 模块名称 # python3强烈推荐这种方法
4、random模块
该模块主要用来产生随机数(伪随机数)
|-- randint(m,n) # 产生随机整数[m, n]
|-- random() # 产生一个0~1内的随机数
|-- choice() # 在序列(seq)中随机筛选一个元素
|-- uniform() # 产生的基于正态分布的随机数
5、math模块
math主要的作用数学运算
|-- ceil # 向上取整
|-- floor # 向下取整
注意:全局函数的中round # 四舍五入
|-- e # 自然常数
|-- fabs # 求绝对值,等价于 全局函数abs
|-- fmod # 求模的
|-- isnan() # 判断某个数值不是数值
|-- isfinite() # 判断是否无限
|-- pi # 圆周率
|-- pow() # 幂次方,等价于 全局函数pow
|-- sqrt() # 开平方根
6、os
系统的文件系统
|-- chdir(path) # 修改当前工作目录
|-- curdir # os属性,获取当前目录,注意是返回的相对路径
|-- chmod() # 修改权限,Linux
|-- cpu_count() # 返回cpu的核对应的线程数
|-- getcwd() # 获取当前目录,注意是返回的绝对路径
|-- getpid() # 获取当前进程的进程编号
|-- getppid() # 获取当前进程的父进程的编程
|-- kill() # 通过进程编号杀死进程
|-- os.linesep # 对应系统的换行符
|-- listdir() # 返回对应目录下的文件及文件夹
|-- makedirs() # 创建目录,支持多层创建
|-- mkdir() # 创建目录,只支持一层创建
|-- open() # 创建文件,等价于全局open
|-- pathsep # 获取环境变量的分隔符 window ; linux :
|-- sep # 路径的分隔符 window \\ linux /
|-- remove(path) # 删除文件
|-- removedirs() # 删除目录,支持多层删除,递归删除
|-- system # 执行终端命令
7、os.path
|-- abspath(相对路径) # 返回路径对应的绝对路径 dirname + basename = abspath
|-- altsep # 查看python中的各种符号
|-- basename # 文件名称
|-- dirname # 文件所在的目录
|-- curdir # 当前目录
|-- exists # 判断文件或者目录是否存在
|-- getctime # 创建时间
|-- getmtime # 修改时间
|-- getsize # 获取文件的大小,单位是字节
|-- isdir # 判断path是不是目录
|-- isfile # 判断path是不是文件
|-- isabs # 判断是不是绝对路径
|-- islink # 判断是不是链接
|-- ismount # 判断是不是挂载文件
|-- join(p1, p2) # 拼接路径
|-- sep # 路径分割符
|-- split # 分割路径 abspath = dirname + basename
|-- realpath # 返回真实路径
8.sys模块
|-- api_version # python的内部版本号
|-- argv() # 接收脚本参数的,注意第一个参数是脚本名称
|-- copyright # 输出cpython的版权信息
|-- sys.exit() # 退出系统
|-- getdefaultencoding() # 获取默认编码,默认是utf-8
|-- getfilesystemencoding() # 获取文件系统默认编码,默认是utf-8
|-- getrecursionlimit() # 获取python对于递归的限制层数
|-- setrecursionlimit(num) # 重新设置递归的限制层数
|-- getrefcount(对象) # 获取对象的引用计数,垃圾回收机制中
|-- getwindowsversion # 获取窗口的版本信息
|-- version() # 获取版本信息
python的垃圾回收原理:
引用计数为主,以标记清除和分代收集为辅