Python函数
1):初识函数:
-
函数的优点:
- 1.减少代码的重复率
- 2.增强代码的阅读性
2):函数的结构与调用
-
2.1 函数的结构
def 函数名(): 函数体
-
def: 关键词开头,空格之后接函数名称和圆括号(),最后还有一个:
-
def: 是固定的,不能变,它就是定义函数的关键字
-
空格:为了将def关键字和函数名分开,必须空1格
-
函数名:函数名只能包括字符串 下划线和数字且不能以数字开头,虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并且具有可描述性
-
括号:是必须加的,
-
3):函数的返回值
- 一个函数就是封装一个功能,这个功能一般都会有一个最终结果;比如你写一个登录函数,最终登录成功与否是不是需要返回你一个结果?还有就是通过len()这个函数来获取一个对象元素的总个数,最终肯定会返回一个元素.
s1 = 'absdcda'
print(len(s1))
- 那么这个返回值如何设置呢?就用到python中的一个关键字:return
def funcl():
print('拿出新买的Apple手机')
print('打开douyin')
print('上划一下')
print('下划一下')
print('找个nice的视频')
return
print('仔细研究研究')
print('添加至收藏')
-
1.函数中遇到return,次函数结束,不在继续执行
- 那么函数的返回值,既然叫做返回值,他就是返回一些数据,那么返回给谁呢?
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(元祖),调用者可以直接使用元祖的结构获取多个变量;
-
4):函数的参数
函数的参数,函数是以功能为导向的,上面我们写的函数里面的代码都是写死的,也就是说,这个函数里面的更改起来很麻烦,试想一下,我们使用交友软件,可不可以进行筛选,比如选择性别,年龄等导出结果,再拿我们之前学过的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.形参:
- 写在函数声明的位置的变量叫形参,形式上的一个完整.表示这个函数需要xxx
-
2.实参:
- 在函数调用的时候给函数传递的值,加实参,实际执行的时候给函数传递的信息,表示给函数xxx函数的传参就是函数实际参数交给形式参数的过程
-
函数的传参就是函数将实际参数交给形式参数的过程:
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','萝莉音')
练习
- 编写函数,给函数传递两个参数,a与b相加,返回a参数和b参数相加的和
def f(a,b):
c = a+b
return c
sum = f(5,8)
print(sum)
结果为:13
- 编写函数,给函数传递两个参数a与b,比较a,b的大小,返回a,b最大的那个数
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
-
2.关键字参数:
- python提出了一种叫做关键字参数,我们不需要记住每个参数的位置,只要记住每个参数的名字就可以了
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.默认值参数:
- 在函数声明的时候,就可以给出函数参数的默认值,默认值参数一般是这个参数使用率较高,才会设置默认值参数,可以看看open函数的源码,mode='r' 就是默认值参数,给一个默认值---sex='男'的默认值
def stu_info(name,age,sex='男'):
print('录入人员信息')
print(name,age,sex)
print('录入完毕')
stu_info('张三',18)
注意:必须先声明在位置参数,才能声明关键字参数
综上所述:在形参的角度来看
-
1.位置参数
-
2.默认值参数(大多数传进来的参数都是一样的,一般默认参数函数的形参角度参数还有两种)