当前位置:首页>python>中篇Python(ODOO)篇 第一章 Python基础(六)基础部分 14.函数

中篇Python(ODOO)篇 第一章 Python基础(六)基础部分 14.函数

  • 2026-09-08 01:20:06
中篇Python(ODOO)篇 第一章 Python基础(六)基础部分 14.函数

函数是组织好的,可重复使用的,用来实现单一或相关联的代码段。

函数能提高应用的模块性和代码的重复你用你。Python提供了很多内建函数,我们也可以自己创建函数,被叫做用户自定义函数。

Python定义函数使用def 关键字,一般格式如下:

def 函数名(参数列表):

函数体

简单的函数示例:

1、定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

l函数代码块以def关键词开头,后接函数标识符名称和圆括号()。

l任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

l函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明。

l函数内容以冒号起始,并且缩进。

lreturn[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None。

2、函数变量作用域

定义在函数内部的变量拥有一个局部作用域,定义在函数外的变量拥有全局作用域,全局作用域的变量如果在函数内被赋值,则这个局部变量覆盖了全局变量,该改变仅函数体内有效。如果需要在函数体内使用全局函数,用global申明后使用。

示例如下:

3、参数传递

在Python中,不同类型的参数传递进入函数后,对参数操作后对原值影响会不一样。

l不可变类型(整数、字符串、元组):类似值传递,比如fun(a),传递的只是a的值,在函数内修改a,只是修改另一个复制的对象,不会影响a本身。

l可变类型(列表、字典):类似引用传递或地址传递,如fun(b),是将b真正的传进去,在函数内修改b,外部的b也会受到影响。

Python中一切都是对象,所以我们通常说传不可变对象和传可变对象。

4、参数

调用函数时可使用的正式参数类型:

l必备参数

l命名参数

l缺省参数

l不定长参数

必备参数

必备参数或称位置实参,须以正确的顺序传入函数。调用的数量必须和声明时一样。

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数运行函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值。

函数也可以使用 kwarg=value的关键字参数形式被调用,例如内置函数print。

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

lobjects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。

lsep -- 用来间隔多个对象,默认值是一个空格。

lend -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。

lfile -- 要写入的文件对象。

lflush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。

缺省参数

定义函数时,可以给某个参数赋值一个默认值,具有默认值的参数就叫做缺省参数

l调用函数时,如果没有传入缺省参数的值,则在函数内部使用参数默认值

l将常用的值设置为参数的缺省值,从而简化函数的调用

l要使用最常见的值作为默认值

l如果一个参数的值不能确定,则不应该设置默认值,具体的数值在调用函数时,由外界传递

l必须保证带有默认值的缺省参数在参数列表末尾

l在调用函数时,如果有多个缺省参数,需要指定参数名,这样Python解释器才能知道参数的对应关系

示例如下:

多值参数

当函数需要处理的参数个数不确定时,可使用多值参数。Python有两种多值参数:

l元组:参数名前加一个星号(*)

l字典:参数名前加两个星号(**)

一般在给多值参数命名时,习惯使用以下两个名字

l*args存放元组参数

l**kwargs 存放字典参数(kw即keyword,kwargs即键值对参数)

拆包

在上面多值参数传递时,实际使用了拆包功能。拆包主要用于元组和字典参数的传递。在调用带有多值参数的函数时,使用拆包简化参数的传递:

直接将一个元组变量实参传递给元组形参args,在元组变量前,加星号(*)

直接将一个字典变量实参传递给字典形参kwagrs,在字典变量前加两个星号(**)

示例如下:

5、返回值

Python函数返回值使用return语句,可以将函数作为一个值赋值给指定变量,也可以返回空值。

最新文章

随机文章