函数命名规则与变量一样。
函数基本框架:
>>> def world(s1):
a = 1
b = 2
c = a + b
print(s1)
return c
>>> world(5)
5
3
return:
没有返回值(默认返回None):
1.不写return,返回None;
2.只写return,返回None,且return后的代码不执行(结束/跳出一个函数);
3.return None,此方法不常用。
返回一个值
1.可以返回任何数据;
2.只要返回就可以接收到;
3.如果在一个程序中有多个return,只返回执行的第一个。
返回多个值
1.N个变量接受N个值,变量与值一一对应;
2.一个变量接受N个返回值,得到一个tuple。
参数:
>>> def world(接受参数/形参):
a = 1
b = 2
c = a + b
print(s1)
return c
>>> world(传递参数/实参)
#实参在调用参数的过程中进行的,形参在执行定义的参数过程中执行的;
#没有参数:定义和调用参数时括号内不写内容;
#有一个参数:传什么是什么
#有多个参数:
#位置参数:形参abc对应实参123,按照顺序依次传参
>>> def world(s1,s2,s3):
s4 = s1 + s2 * s3 + s1 * s3
return s4,s1,s2,s3
>>> a1,a2,a3,a4 = world(s2 = 6,s3 = 7,s1 = 8)
>>> print('a1',a1,'\na2',a2,'\na3',a3,'\na4',a4)
a1 106
a2 8
a3 6
a4 7
#关键字传参:实参处标明对应关系
>>> def world(s1,s2,s3):
s4 = s1 + s2 * s3 + s1 * s3
return s4,s1,s2,s3
>>> a1,a2,a3,a4 = world(6,7,8)
>>> print('a1',a1,'\na2',a2,'\na3',a3,'\na4',a4)
a1 110
a2 6
a3 7
a4 8
#位置参数与关键字传参混用时注意要先位置再关键字参数,且不能重复传参给同一个变量;
#动态参数(*args **kwargs)
#*args:1.可以接受多个任意参数 2.参数名可以更改,但参数名前必须加*,标准参数名为*args 3.不能按关键字传参,只能按位置传参
>>> def world(*args):
s = 0
for i in args:
s += i
return args,s,i
>>> args,s,i = world(8,9,10,11,12)
>>> args
(8, 9, 10, 11, 12)
>>> s
50
>>> i
12
#**kwargs:接收关键字参数,并组织成一个字典
>>> def world(**kwargs):
for i in kwargs:
print (i)
return kwargs
>>> world(a = 1,b = 2,c = 3,d = 4)
a
b
c
d
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
#可以同时放两种动态参数,但要按照先位置参数再关键字参数的顺序,即先*args再**kwargs
#在实参角度上,给一个序列加上*就是将这个序列按顺序打散
#在形参角度上,给变量加上*就是按顺序组合所有序列
#如果序列是关键字形式,则实参使用**打散后,再用形参**组合成字典。
关于函数名:
1.函数名就是内存地址;
2.函数名可以赋值;
3.函数名可以作为容器类型的元素,即可变数据类型的元素;
4.函数名可以作为函数的实参及返回值;
5.函数名就是一个第一类对象。