一、定义方式
def function_name(参数列表):
函数体
[return 返回值1,返回值2...]
二、参数列表
2.1、接收固定数量实参
def function(a, b, c):
pass
2.2、接收不定数量实参
*parameter_name 代表接收元组
**parameter_name 代表接收字典
def function(*tuple, **dict):
print(f"{type(tuple)}\t{tuple}")
print(f"{type(dict)}\t{dict}")
#<class 'tuple'> (1, 2, 3)
#<class 'dict'> {'name': 'jack', 'age': 18}
function(1, 2, 3, name= 'jack', age= 18)
2.3、默认值
指定默认值的形参可以不进行传参,传了就覆盖
def function(name, age=18):
print(name, age)
#jack 18
function('jack')
#mark 19
function('mark', 19)
三、返回值
python的函数可以有多个返回值,类型为元组
def function():
return 1, 2
tuple= function()
a, b= function()
四、参数传递
python的函数参数传递是引用传递
对于不可不变数据类型(元组、int、float、字符串),在函数内的操作不会改变实参的值
对于可变数据类型(列表、集合、字典),函数内可以改变实参的值
def function(a):
a = 3;
def function2(list):
list[0]= '修改了'
a = 2
function(a)
#2
print(a)
list=['a', 'b']
function2(list)
#['修改了', 'b']
print(list)
五、实参传递方式
5.1、位置传递
按照参数位置一一对应
def function(a, b):
print(a, b)
#1 2
function(1, 2)
5.2、关键字传递
指定形参的名字,可以不按照顺序传递
def function(a, b):
print(a, b)
#2 1
function(b= 1, a= 2)
5.3、混合传递
既有位置传递,又有关键字传递
注意两者位置:function_name(位置传递,关键字传递)
def function(a, b, c):
print(a, b, c)
#1 2 3
function(1, c=3, b=2)
#编译不通过
function(c=3, 1, b=2)
#编译不通过
function(c=3, b=2, 1)
六、将函数存储到模块中
#text.py
def function(name, age=18):
print(name, age)
6.1、导入整个模块
import module_name [as another_module_name]
使用方法:module_name.function_name
import text
#jack 18
text.function('jack')
6.2、导入特定函数
from module_name import function_name [as another_function_name]
使用方法:function_name(参数列表)
from text import function
#mark 19
function('mark', 19)
6.3、导入所有函数
from module_name import *
使用方法:function_name(参数列表)
from text import *
#mark 19
function('mark', 19)