python之函数一
内容导读
- 函数初识
- 函数的参数
函数初识
-
函数的介绍
我们目前为止,已经可以完成一些方法的基本功能了,现在我们自己来实现一个len(),但是不能使用len()方法。
a = "alexdsb" count = 0 for i in a: count += 1 print(count)
我们现在实现了一个求长度,我还想让你们求一下列表和元组的长度 是不是就要将我们写的内容再次拿过来。
我们在求一个字典的长度,也需要将我们写好的内容拿过来使用 好像咱们这个程序中好多都是一样的啊,我们能不能把这些代码封装起来,用的时候拿过来就用啊。
-
函数的定义
def是python中关键字主要用来定义函数的
len这个是函数的名字
()里面放置函数的参数
:冒号是表示这个语句写完了
我们来看一下函数的定义在内存中的空间中发生了什么:
就是这样,内存开辟了一块空间,但是里面存放的是代码。这样我们就将咱们写的代码封装起来了。
-
函数的调用
def len(): a = "alexdsb" count = 0 for i in a: count += 1 print(count) len() # 函数的调用
我们在函数调用执行的时候,才会执行func这个空间里面的代码,执行的时候开辟空间,这次 是在func里面开辟的空间。
当我们执行完函数后,函数里开辟的空间就销毁了,我们如果想用函数里的值就需要从函数中传递出来。
-
函数的返回值
def yue(): print("约你") print("约我") print("约他") return yue() >>>None
返回的结果是None,我们有实时候操作列表的方法打印的结果就是None,我们所有用字符串,列表的方法都是函数。
函数中遇到return,此函数就立马结束了,不再继续执行。
函数的返回值可以是多个结果:
def yue(): print("约你") print("约我") print("约他") return "美女一枚", "萝莉一枚" girl = yue() print(type(girl)) # tuple
注:当函数返回多个结果的时候,返回的是一个元组。
-
总结
1.遇到return,此函数结束,return下面的代码将不会在执行。
2.return 返回值
- 如果return什么都不写或者干脆就没写return,返回的结果就是None。
- 如果return后面写了一个值,返回给调用者这个值。
- 如果return后面写了多个结果,返回给调用者一个tuple(元祖),调用者可以直接使用解构获取多个变量。
函数的参数
函数的参数
-
简述
参数,就是函数括号里面的类容,函数在调用的时候指定一具体的变量的值就是参数。
如果我们在定义函数的时候写了形参,在调用的时候没有传递值,调用的时候右边括号会发黄,所以我们必须要传递参数,参数要一一对应,不能多也不能少。
-
参数
-
形参
写在函数声明的位置的变量叫做形参,形式上的一个完整,表示这个函数需要形参。
-
实参
在函数调用的时候给函数传递的值,叫实参,实际执行的时候传递的信息表示给函数传递实参。
-
传参
从调用函数的时候将值传递到定义函数的过程叫做传参。
-
参数的分类
- 位置参数
def yue(app,person,music): #形参
print("拿出手机")
print("打开"+app)
print("搜索" + person +"的"+music)
yue("网易云音乐","春花","我从涯边跌落") # 实参
结果:
拿出手机
打开网易云音的乐
搜索春花的我从涯边跌落
形参就是一个变量名,实参就是值 传参就是在赋值
def func(addr,age):
addr = "北京"
age = 18 # 从实参到形参的过程中,函数体内部帮我做了变量的赋值
print(addr)
print(age)
func("北京",18)
练习
编写函数,给函数传递两个参数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
2.关键字参数
位置参数好不好呢? 如果是少量的参数还算OK, 没有问题. 但是如果函数在定义的时候参数非常多怎么办? 程序员必须记住, 我有哪些参数, 而且还有记住每个参数的位置, 否则函数就不能正常调用了. 那则么办呢? python提出了一种叫做关键字参数. 我们不需要记住每个参数的位置. 只要记住每个参数的名字就可以了
def yue(app,person,music):
print("拿出手机")
print("打开"+app)
print("搜索" + person +"的"+music)
yue(app="网易云音乐",person="春花",music="我从涯边跌落") # 实参
结果:
拿出手机
打开网易云音的乐
搜索春花的我从涯边跌落
搞定, 这样就不需要记住繁琐的参数位置了.
3.混合参数
可以把上面两种参数混合着使用. 也就是说在调用函数的时候即可以给出位置参数, 也可以指定关键字参数.
# 混合参数
yue("微信", age=18, address="上海") # 正确.第一个位置赋值给chat, 后面的参数开始指定关键字.
yue(age="18", "微信", address="广州") # 错误, 最开始使用了关键字参数, 那么后面的 微信的位置就串了, 容易出现混乱
注意: 在使用混合参数的时候, 关键字参数必须在位置参数后面
4.总结
综上: 在实参的⾓角度来看. 分为三种:
- 位置参数
- 关键字参数
- 混合参数, 位置参数必须在关键字参数前面
位置参数:
位置参数,按照位置来赋值,到目前为止,我们编写的函数都是这种
def yue(chat, address, age):
print("拿出手机")
print("打开"+chat)
print("找个"+address+"附近漂亮的"+str(age)+"岁妹子")
print("约不约")
默认值参数:
在函数声明的时候, 就可以给出函数参数的默认值. 在调用的时候可以 给出具体的值, 也可以不给值, 使⽤用默认值. 比如, 我们录入咱们班学生的基本信息. 通过调查发现. 我们班大部分学生都是男生. 这个时 候就可以给出⼀一个sex='男’的默认值.
def stu_info(name, age, sex='男'):
print("录入学生信息")
print(name, age, sex)
print("录入完毕")
stu_info("张强", 18)
注意:必须先声明在位置参数,才能声明关键字参数
综上:在形参的角度来看
- 位置参数
- 默认值参数(大多数传进来的参数都是一样的, 一般用默认参数