2.1 函数的结构
def 函数名(): 函数体
def: 关键词开头,空格之后接函数名称和圆括号(),最后还有一个:
def: 是固定的,不能变,它就是定义函数的关键字
空格:为了将def关键字和函数名分开,必须空1格
函数名:函数名只能包括字符串 下划线和数字且不能以数字开头,虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并且具有可描述性
括号:是必须加的,
s1 = 'absdcda' print(len(s1))
def funcl(): print('拿出新买的Apple手机') print('打开douyin') print('上划一下') print('下划一下') print('找个nice的视频') return print('仔细研究研究') print('添加至收藏')
def funcl(): print('拿出新买的Apple手机') print('打开douyin') print('上划一下') print('下划一下') print('找个nice的视频') return '真nice' print('仔细研究研究') print('添加至收藏') ret = funcl() print('girl--->',ret)
跟我们之前使用的len()一样,函数的返回值返回给了函数名()这个整体,也就是这个执行者
2.return 会给函数的执行者返回值,当然也可以返回多个值
def funcl(): print('拿出新买的Apple手机') print('打开douyin') print('上划一下') print('下划一下') print('找个nice的视频') return '真nice','真棒','好看' print('仔细研究研究') print('添加至收藏') ret = funcl() print('girl--->',ret)
总结一下:
1.遇到return,函数结束,return下面的(函数内)的代码不会执行;
2.return 给函数的执行者返回值;
2-1 如果return后面什么都不写,或者函数中没有return,则返回的结果是None;
2-2 如果return后面写了一个值,则返回给调用者这个值;
2-3 如果return后面写了多个结果,返回给调用者一个tuple(元祖),调用者可以直接使用元祖的结构获取多个变量;
函数的参数,函数是以功能为导向的,上面我们写的函数里面的代码都是写死的,也就是说,这个函数里面的更改起来很麻烦,试想一下,我们使用交友软件,可不可以进行筛选,比如选择性别,年龄等导出结果,再拿我们之前学过的len,这个len是不是可以获取字符串的总个数?是不是可以获取列表的总个数?
s1 = 'easdasd' l1 = [1,3,4] print(len(s1)) # 7 print(len(l1)) # 3
示例:
def date(sex): print("拿出手机") print("打开陌陌") print('设置筛选条件:性别: %s' %sex) print("找个漂亮的妹子") print("问她,约不约啊!") print("ok 走起") date('女')
上面就是函数传参的示例,函数的参数可以从两个角度划分:
1.形参:
2.实参:
函数的传参就是函数将实际参数交给形式参数的过程:
def date(sex): # 函数定义时(参数),这个就是形参 print('拿出手机') print('打开比心平台') print('设置筛选条件:性别:%s' %sex) print('找个漂亮的陪玩妹子') print('问老妹打不打') print('ok,走起') date('女') # 函数执行时(参数) 这个就是实参 # 过程就是:代码运行到date('女'),开始执行函数同时将字符串'女'这个数据传递给变量sex,然后执行函数中的代码,如果遇到sex,其实就是使用'女'这个数据
实参角度:
1.位置参数:
def date(sex, age, hobby): print("拿出手机") print("打开陌陌") print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby)) print("找个漂亮的妹子") print("问她,约不约啊!") print("ok 走起") date('女','25~30','唱歌') date('人妖','20~25','萝莉音')
练习
def f(a,b): c = a+b return c sum = f(5,8) print(sum) 结果为:13
def f(a,b): if a > b: return a else: return b sum = f(5,8) print(sum) 结果为:8
三元运算符:
def f(a,b): c = a if a > b else b # 当 a > b就把a赋值给c,否则就把b赋值给c return c msg = f(5,7) print(msg) 结果为:7
def date(sex,age,hobby): print('拿出手机') print('打开比心平台') print('设置筛选条件:性别:%s,年龄:%s,爱好:%s' %(sex,age,hobby)) print('找个漂亮的陪玩妹子') print('问老妹打不打') print('ok,走起') date(hobby='打篮球',sex='女',age='23-28')
混合参数
混合参数一定要记住:关键字参数一定位置参数的后面 def date(sex, age, hobby): print("拿出手机") print("打开陌陌") print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby)) print("找个漂亮的妹子") print("问她,约不约啊!") print("ok 走起") date('女',hobby='唱歌',age='25~30',)
在实参的角度来看,参数分为三种:
1.位置参数
2.关键字参数
3.混合参数,位置参数必须在关键字参数前面
1.位置参数:
def date(sex, age, hobby): print("拿出手机") print("打开陌陌") print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby)) print("找个漂亮的妹子") print("问她,约不约啊!") print("ok 走起") date('女','25~30','唱歌')
2.默认值参数:
def stu_info(name,age,sex='男'): print('录入人员信息') print(name,age,sex) print('录入完毕') stu_info('张三',18)
注意:必须先声明在位置参数,才能声明关键字参数
综上所述:在形参的角度来看
1.位置参数
2.默认值参数(大多数传进来的参数都是一样的,一般默认参数函数的形参角度参数还有两种)