1.函数的作用
1.1函数的作用:提高代码的复用性
2.函数的特点
2.1实现某个指定的功能
2.2重复使用
例如:type(),len(),range() 等内置函数
3.函数的语法
def 函数名(参数1,参数2,参数3...):
函数体(此函数的具体功能)
return 表达式
例如:
def add(a,b,c):
result=a+b+c
return result #1.用result变量存储函数体的运行结果,再用return返回
res=add(4,5,1) #2.用res变量存储返回值
print(res) #3.再打印存储返回值res
注意事项:
a.def 顶格写,告诉python,这是一个函数
b.函数名小写,不同的字母与数字之间用下划线隔开,不能用数字开头
c.参数的个数大于等于0个(>=0)
d.函数体是函数的子代码,要缩进,实现这个函数的功能
e.return后面的表达式大于等于0(>=0);return后面表达式个数显示
e1.表达式==0个,返回None(空的)
e2.表达式==1个,返回指定的数据类型
e3.表达式>1个,返回是元组的类型
f.想要拿到函数体运行的结果,要加上return,return后面加表达式
g.如果return后面没有表达式,return可以不写(没有表达式,Python会自动添加一个隐式的:return)
h.return表示函数结束,所以不执行后面的代码了;所以有效代码要放在return前面
i.调用函数:函数名(对应个数的参数)
i1.写好的函数本模块不一定都要调用,只是放在那里,等后面需要再导入
i2.写完函数要在最后加上:if __name__=="__main__":
,后面放测试代码
if __name__=="__main__": #__name__表示当前模块的名字
#函数名1
#函数名2
#函数名3
if __name__ == '__main__'
的意思是:
1.当.py文件被直接运行时,if __name__ == '__main__'
之下的代码块将被运行;
2.当.py文件以模块形式被导入时,if __name__ == '__main__'
之下的代码块不被运行(过滤掉if name == 'main’下的测试代码)。
4.函数的参数
4.1函数为什么要加参数呢?
a.通过调用函数,把参数列表传递进来
b.提高代码的复用性
4.2函数的参数个数大于等于(>=0)0个
4.3函数的参数类型:位置参数、默认参数、动态参数、关键字参数
一.位置参数:通过调用函数时传参,是按顺序赋值
形参(只是占坑的,没有实际数据)
实参(调用函数的时候给的值)
在实参里面,还可以指定参数赋值(a=1,c=2,b=101)
def info(name,age,height): #形参
print("运行后的结果是:{},今年{}岁了,身高是:{}".format(name,age,height))
info("老男孩",20,175.5) #实参
运行后的结果是:老男孩,今年20岁了,身高是:175.5
二.默认参数:给形参指定默认值
调用函数时候,以实参的值为主;
实参不传值,就默认取形参的默认值
位置参数要放在默认参数前面
调用函数时,形参里面有多少个位置参数,我们就要传多少个参数
def info(name,age,height=175.5):
print("运行后的结果是:{},今年{}岁了,身高是:{}".format(name,age,height))
info("老男孩",20,178) #以实参的值为主;height有默认值了,所以height的实参可以不传
运行后的结果是:老男孩,今年20岁了,身高是:178
三.动态参数:关键字(*args ) 预先不知道需要传多少个参数,也叫不定长参数
可以传任意多个参数,参数之间用逗号隔开
不限制数据类型
默认:args,前面带一个星号
参数到函数内部,变成了元组类型
def info(*args):
print("运行后的结果:",args)
info("老男孩",20,178,(1,3.1415),{"hobby":"爬山","sport":"打篮球"})
运行后的结果: ('老男孩', 20, 178, (1, 3.1415), {'sport': '打篮球', 'hobby': '爬山'})
四.关键字参数:**kwargs (key word arguments)
关键字是key:value的形式,参数之间用逗号隔开
默认:kwargs,前面带两个星号
参数到函数内部,变成字典类型
def info(**kwarg):
print("运行后的结果:",kwarg)
info(name="老男孩",age=20,height=178,love={"hobby":"爬山","sport":"打篮球"})
运行后的结果: {'age': 20, 'love': {'hobby': '爬山', 'sport': '打篮球'}, 'height': 178, 'name': '老男孩'}
5.函数之间的相互调用
def student_info(class_name,name,offer):
print("{}期的{}同学,拿到了{}K的offer!!".format(class_name,name,offer))
def eat_like(*args):
s_1=""
for i in args:
s_1+=i
s_1+="、"
new_s_1=s_1.strip("、")
print("最喜欢的是:",new_s_1)
student_info(15, "小李", 30) #eat_like()函数里调用上面定义好的student_info()函数
eat_like("啤酒", "BBQ")
最喜欢的是: 啤酒、BBQ
15期的小李同学,拿到了30K的offer!!