函数
把相对独立的某个功能抽象出来,使之成为一个独立的整体
使用函数包括定义函数和调用函数(必须先定义再调动)
定义函數:
以def开头即可
def function_name(name1,arg2):
function body
return value
函数名(function_name):与Python其他标识命名规则相同,字母或下划线开头,后可跟字母,数字,下划线。函数名命名时应能反映函数所执行的任务
Ps:函数名字母的大小写不同视为两个不同的函数
函数参数(arg1,arg2):调用一个函数时可以传递的参数。可有一个或多个,也可没有
函数内容(function body):有效代码都可以 但要注意函数内容要相对于定义函数def行需要缩进四个空格(tad)
函数返回值(return value):函数执行后需要返回的值。也可以不反回任何内容,不反会内容则视为返回“none”
def introduce(name):
print(“hello”,name)
Introduce(“world”)
>>hello world
函数参数:
创建函数时,可以设置参数也可以不设置参数。对于设置参数的函数,当调用函数时需要向函数传递参数,被传入的参数称为实参数,而函数定义时的参数为形参
必须参数
即当定义函数时使用参数了,调用该函数时必须输入参数,并且调用的数量和顺序必须和定义函数时的参数保持一致。
def add(a,b):
Print(“a+b”,a+b)
add(1,2)
>>a+b=3
如果少传一个参数或多传几个参数 程序会报错 无法运行
关键字参数:
使用关键字参数可以不按函数定义时的参数的顺序来调用函数,Python解释器能够根据函数定义的参数名来匹配参数。
def hello(name,age):
print(“姓名:”,name)
print(“年龄:”,age)
hello(name=”零一”,age=18)#按顺序传递
hello(age=3,name”小明”)#不按顺序传递参数
>>姓名:零一
>>年龄:18
>>姓名:小明
>>年龄:3
但不能传入没有定义的参数
def person_name(name)
Print(“姓名”,name)
person_name(name=”零一”,age=18)#错误
因age未被定义 导致调用函数错误
综上:关键字参数的顺序对结果没有影响,无论是否按照顺序调用都可以得到正常的结果。
默认参数:
定义函数可以给函数添加默认值,如果调用函数时没有传入函数,函数会使用默认值,并不会报错
def default_value(name,age=18)
print(“我的名字是:”,name)
print(“我今年:”,age,”岁”)
default_value(“零一”)
>>我的名字是:零一
>>我今年:18岁
但是要注意默认参数必须定义在最后,否者会报错
def default_value(age=18,name):
print(“我的名字是:”,name)
print(“我今年:”,age,”岁”)
default_value(name=”零一”)#错误
即:非默认参数不能跟在默认参数后面
可变参数:
在某些情况下我们不能在定义函数之前不能确定参数的数量和内容,这时候就可以用可变参数。
some_func(*args,**kwargs)
some_func 为函数名
*args和**kwargs为可变参数
def foo(*args):
print(args)
foo()
foo(1,2)
foo(“ad”,”12”,”sd”)
>>()
>>(1,2)
>>(‘ad’,’12’,’sd’)
“*args”获得的是一个元组
def foo(**kwargs):
print(kwargs)
foo()
foo(1,2)
>>{}
>>{1,2}
“**kwargs”获得的是一个字典