rb
wb
r+
w+
a+
函数
def foo();
函数体 (return也算函数体,'''注释'''也算函数体)
函数调用 (先定义后调用)
foo() 得到函数返回值
foo 得到函数本身
代码执行的流程:
现在内存中建立函数,但是不执行,字形函数外的代码,当遇到调用函数的时候,才会执行函数内的内容
def func():
print('from func')
def foo():
print('from foo')
func()
foo() # 正常执行
返回值
在函数执行的过程中,当在函数体内遇到了 return关键字,函数就会立刻停止执行,并返回其返回值, return 之后的代码不会被执行。
return a #a可以为各种数据结构,当不定义,默认返回 None .返回多个值时,每个值用逗
号隔开,也就是元组的形式
函数参数
只有在函数内才是局部变量 (形参)
其余都是全局变量 (实参)
形参:位置参数,默认参数
位置参数
def send_mail(to, title, content):
send_info = {"user": to,
"title": title,
"content": content}
return send_info
默认参数
def default_mail(title, content, to='xiannv@163.com'):
send_info = {"user": to,
"title": title,
"content": content}
return send_info 位置参数写在最左边
实参:位置参数,关键字参数
位置参数:给形参的位置参数传参
info = send_mail("xiannv@163.com",
"一生问候",
"告诉你,一想到你,我这张丑脸上就泛起微笑。")
print(info)
Ps:
def myfunc(x, y, z):
print(x, y, z)
tuple_vec = (1, 0, 1)
dict_vec = {'x': 1, 'y': 0, 'z': 1}
>>> myfunc(*tuple_vec)
1, 0, 1
>>> myfunc(**dict_vec)
1, 0, 1
关键字参数:关键字参数的关键字必须与形参的名字一致
info = send_mail(content="我爱你,不光是因为你的样子,还因为和你在一起时,我的样子",
title="一生问候",
to="jingjing@126.com")
print(info)
万能参数:
用 * 表达式接收传进来的任意多个未明确定义的位置参数
def foo(x, y, *args):
print(args)
foo(1, 3, 5, 6)
在函数体内接收到的参数会放在元组中
用 ** 表达式接收传进来的任意多个未明确定义的关键字参数
def func(x, y, **kwargs):
print(kwargs)
func(1, 3, name='shark', age=18)
在函数体内接收到的参数会放在字典中
在定义函数时三种形参的定义顺序
def position_arg(arg1, arg2, *args, k1='v1', **kwargs):
pass
匿名函数
def f1(arg1,arg2):
return arg1 + arg2 普通函数
lambda arg1,arg2:arg1 + arg2 默认函数
网友评论