记录我的 python 学习历程-Day09 函数 / 返回值 / 参数
函数初识
- 函数:
- 内置函数:python 自带的一些功能,直接调用就可以,比如 len()。
- 自定议函数:需要我们自己定义一段代功能性代码,方便调用。
- 函数的优点:
- 减少代码重复性。
- 增强了代码可读性。
函数的结构与调用
-
结构
def 函数名(): 函数体
这就 是函数的结构
def :关键字,表示我要定义函数了。
函数名:与变量的命名规则相同,要具有可描述性。
函数体:缩进,这里面是你这个函数要完成的功能的具体代码,也是你定义这个含数的意义。
-
调用
-
s = 'fdsfjldsajfklsajflas' def my_len(s): # 定义一个函数 cont = 0 def_li = [] for i in s: cont += 1 print(cont) my_len(s) # 调用函数
使用函数名加小括号来调用函数,只有解释器读到函数名()时,才会执行此函数,如果没有这条指令,函数里面有再多的代码也不会执行。并且:这个指令你写几次,函数里的代码就运行几次。
函数的返回值
-
遇到return,函数结束,return下面的(函数内)的代码不会执行。
-
return 会给函数的执行者返回值。
- 如果return后面什么都不写,或者函数中没有return,则返回的结果是None
- 如果return后面写了一个值,返回给调用者这个值
- 如果return后面写了多个结果,,返回给调用者一个tuple(元组),调用者可以直接使用元组的解构获取多个变量。
s = 'fdsfjldsajfklsajflas' def my_len(s): cont = 0 def_li = [] for i in s: cont += 1 return cont # 返回值 my_len(s) print(my_len(s))
函数的参数
-
函数的传参
-
形参(定义函数时设置的参数)
写在函数声明的位置的变量叫形参,形式上的一个完整,表示这个函数需要 XXX
-
实参(调用函数时填入的参数)
在函数调用的时候给函数传递的值,实际执行的时候给函数传递的信息,表示给函数 XXX
函数的传参就是函数将实际参数交给形式参数的过程
def date(sex): # 函数定义时(参数) 这个就是形参 print("拿出手机") print("打开陌陌") print('设置筛选条件:性别: %s' %sex) print("找个漂亮的妹子") print("问她,约不约啊!") print("ok 走起") date('女') # 函数执行时(参数) 这个就是实参 # 这个过程就是:代码运行到date('女')开始执行此函数同时将字符串'女'这个数据传递给变量sex,然后执行函数中的代 # 码。如果遇到sex,其实就是使用'女'这个数据。
-
-
实参角度
-
位置参数(调用函数的时候,填入的参数)
位置参数就是从左至右,实参与形参一一对应。
def date(sex, age, hobby): print("拿出手机") print("打开陌陌") print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby)) print("找个漂亮的妹子") print("问她,约不约啊!") print("ok 走起") date('女','25~30','唱歌')
-
练习
编写函数,给函数传递两个参数a,b a,b相加 返回a参数和b参数相加的和
def f(a,b): c = a+b return c num_sum = f(5,8) print(num_sum) 结果: 13
编写函数,给函数传递两个参数a,b 比较a,b的大小 返回a,b中最大的那个数
def f(a,b): if a>b: return a else: return b num_sum = f(5,8) print(num_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='25~30',) 函数:传入两个字符串参数,将两个参数拼接完成后形成的结果返回。 def func(a,b): return a + b print(func(b='Dylan',a='无敌'))
-
混合参数
可以把上面两种参数混合着使用. 也就是说在调用函数的时候即可以给出位置参数, 也可以指定关键字参数.
位置参数一定要在关键字参数的前面。
# 混合参数 # 位置参数一定要在关键字参数的前面。 def meet(sex,age,skill,hight,weight,): print('打开tantan') print('进行筛选:性别:%s,年龄:%s,技术:%s,身高:%s,体重%s' %(sex,age,skill,hight,weight)) print('左滑一下') print('右滑一下') print('找美女') print('悄悄话....') print('约....走起...') return '筛选结果:性别:%s,体重%s' %(sex,weight) print(meet('女',25,weight=100,hight=174,skill='python技术好的'))
-
综上: 在实参的⾓角度来看参数分为三种:
1. 位置参数,必须要一一对应,从左至右,位置不能错 2. 关键字参数,必须一一对庆,位置可以调整 3. 混合参数,位置参数必须在关键字参数前面
-
-
形参角度(定义含数的时候设置的参数)
-
位置参数
位置参数其实与实参角度的位置参数是一样的,就是按照位置从左至右,一一对应
def date(sex, age, hobby): print("拿出手机") print("打开陌陌") print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby)) print("找个漂亮的妹子") print("问她,约不约啊!") print("ok 走起") date('女','25~30','唱歌') 写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 # low 版: def func(l): if len(l) > 2: return l[:2] else: return l # print(func([1,2,3,4,5])) print(func([1,])) # 三元运算符版: def func(l): c = l[:2] if len(l) > 2 else l return c print(func([1,2,3,4,5])) print(func([1,])) def func(l): return l[:2] # l1 = [1,] # print(l1[:2])
-
默认参数
默认参数设置的意义:普遍经常使用的。
def stu_info(name, age, sex='男'): print("录入学生信息") print(name, age, sex) print("录入完毕") stu_info("张强", 18)
注意:必须先声明在位置参数,才能声明关键字参数
-
综上:在形参的角度来看
位置参数 默认认值参数(大多数传进来的参数都是一样的, 一般用默认参数)
-