初识函数
函数的定义
#函数的定义 def meylen(): '''计算s1的长度''' s1 = 'hello world' length = 0 for i in s1: length = length + 1 print(length) #函数的调用 mylen()
总结一
定义:def关键字开头,空格之后接函数名称和括号(),最后有一个‘:’
def是固定的,不能变,必须是连续的def三个字母,不能分开
空格 为了将def关键字和函数名分开,必须空4格
函数名:函数名只能包含字符串,下划线和数字且不能以数字开头。
注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面的第一行,增加函数的可读性
调用:就是函数名()要记得加上括号
函数的返回值
return关键字的作用
return是一个关键字,这个词翻译过来就是‘返回’
没有返回值
不写return的情况下,会默认返回一个none
def mylen(): """计算s1的长度""" s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) #函数调用 str_len = mylen() #因为没有返回值,此时的str_len为None print('str_len : %s'%str_len)
只写return,后面不写其他的内容,也会返回none
def ret_demo(): print(111) return print(222) ret = ret_demo() print(ret)
return none:和上面的两种情况一样
返回一个值:
def mylen(): s1 = 'hello word' length = 0 for i in s1: length = length + 1 return length str_len = mylen() print('str_len:%s'%str_len)
注意:return和返回值之间要有空格,可以返回任意数据类型的值
返回多个值
可以返回任意多个、任意数据类型的值
def ret_demo1(): return 1,2,3,4 def ret_demo2(): return 1,['a','b'],3,4 ret1 = ret_demo1() print(ret1) ret2 = ret_demo2() print(ret2)
返回的多个值会被组织称元组被返回,也可以用多个值来接收
def ret_demo2(): return1,['a','b'],3,4 a,b,c,d = ret_demo2() print(a,b,c,d)
函数的参数
def mylen(s1): length = 0 for i in s1: length = length + 1 retrun length str_len = mylen('hello world') print('str_len:%s'%str_len)
实参和形参
参数还有分别:
我们调用函数时传递的参数叫做实际参数,简称实参。定义函数时的s1,只是一个变量的名字,被称为形式参数,简称形参
传递多个参数
参数可以传递多个,多个参数之间用逗号分割
def mymax(x,y): the_max = x if x>y else y return the_max ma = mymax(10,20) print(ma)
位置参数
站在实参的角度
1.按照位置传值
def mymax(x,y): the_max = x if x>y else y return the_max ma = mymax(10,20) print(ma)
2.按照关键字传值
def mymax(x,y): print(x,y) the_max = x if x>y else y return the_max ma = mymax(y=10,x=20) print(ma)
3.位置关键字形式混用
def mymax(x,y): print(x,y) the_max = x if x>y else y return the_max ma = mymax(10,y=20) print(ma)
正确用法
问题一:位置参数必须在关键字参数的前面
问题二:对于一个形参只能赋值一次
站在形参的角度
位置参数必须传值
默认参数
1.正常使用
使用方法
为什么要有默认参数:将变化比较小的值设置成默认参数
2.默认参数的定义
def stu_info(name,sex='male'): print(name,sex) stu_info('alex') stu_info('eva','female')
3.参数陷阱:默认参数是一个可变数据类型
def defult_param(a,l=[]): l.append(a) print(l) defult_param('alex') defult_param('egon')
动态参数
按位置传值多余的参数都有args统一接受,保存成一个元组的形式
def mysum(*args): the_sum = 0 for i in args: the_sum+=i return the_sum the_sum = mysum(1,2,3,4) print(the_sum)
def stu_info(**kwargs): print(kwargs) print(kwargs['name],kwargs['sex']) stu_info(name = 'alex',sex = 'male')