一 初识函数
函数的优势:
1,减少代码的重复性。
2,使代码可读性更好。
def date():
print("拿出手机")
print("打开陌陌")
print('左滑一下')
print('右滑一下')
print("找个漂亮的妹子")
print("问她,约不约啊!")
print("ok 走起")
date() # 调用函数
二. 函数的结构与调用
- 函数的结构:
def 函数名():
函数体
def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。
def 是固定的,不能变,他就是定义函数的关键字。
空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。
函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并且要具有可描述性
函数体:缩进,函数中尽量不要出现print
括号:是必须加的
def date():
print("拿出手机")
print("打开陌陌")
print('左滑一下')
print('右滑一下')
print("找个漂亮的妹子")
print("问她,约不约啊!")
print("ok 走起")
-
函数的调用
s1=[1,2,3,4,5] s2='sdfsdfsdfdsf' def a(s): count = 0 for i in s: count+=1 print(count) a(s2)
三. 函数的返回值
一个函数就是封装一个功能,这个功能一般都会有一个最终结果的,比如你写一个登录函数,最终登录成功与否是不是需要返回你一个结果?还有咱们是不是都用过len这个函数,他是获取一个对象的元素的总个数,最终肯定会返回一个元素个数这样的结果:
用到python中的一个关键字:return
在函数中遇到return直接结整函数
retuen有两个功能:
- 结束函数不在继续执行
- 会给函数执行者返回值
1)函数中遇到return,此函数结束.不在继续执行
def date():
print("拿出手机")
print("打开陌陌")
return
print('左滑一下')
print('右滑一下')
print("找个漂亮的妹子")
print("问她,约不约啊!")
print("ok 走起")
date()
输出结果:
拿出手机
打开陌陌
2)return 会给函数的执行者返回值。
def date():
print("拿出手机")
print("打开陌陌")
print('左滑一下')
print('右滑一下')
print("找个漂亮的妹子")
print("问她,约不约啊!")
print("ok 走起")
return '约会成功~!'
a = date()
print(a)
输出结果:
拿出手机
打开陌陌
左滑一下
右滑一下
找个漂亮的妹子
问她,约不约啊!
ok 走起
约会成功~!
如果返回多个值,是以元组的形式返回的。如下:
def date():
print("拿出手机")
print("打开陌陌")
print('左滑一下')
print('右滑一下')
print("找个漂亮的妹子")
print("问她,约不约啊!")
print("ok 走起")
return '约会成功~!','123','xxxxxx'
a = date()
print(a)
输出结果:
拿出手机
打开陌陌
左滑一下
右滑一下
找个漂亮的妹子
问她,约不约啊!
ok 走起
('约会成功~!', '123', 'xxxxxx')
总结一下:
1.终止函数,return下面的(函数内)的代码不会执行。
2.return 会给函数的执行者返回值。
可函数的执行者返回值
如果return后面写了多个结果,,返回给调用者一个tuple(元组),调用者可以直接使用元组的结构获取多个变量。
def date():
print("拿出手机")
print("打开陌陌")
print('左滑一下')
print('右滑一下')
print("找个漂亮的妹子")
print("问她,约不约啊!")
print("ok 走起")
return '漂亮的妹子','小萝莉', '成熟女性'
g1,g2,g3 = date()
print(g1, g2, g3) # 漂亮的妹子 小萝莉 成熟女性
四. 函数的传参
将一些数据传到函数里面的,然后让里面的代码利用上这个数据产生我们想要的结果,在返回。
举个例子:
def date(sex):
print("拿出手机")
print("打开陌陌")
print('设置筛选条件:性别: %s' %sex)
print("找个漂亮的妹子")
print("问她,约不约啊!")
print("ok 走起")
date('女')
函数的参数可以从两个角度划分:
- 形参
写在函数声明的位置的变量叫形参,形式上的一个完整.表示这个函数需要xxx
- 实参
在函数调用的时候给函数传递的值.加实参,实际执行的时候给函数传递的信息.表示给函数xxx
1、实参:
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','唱歌')
练习
编写函数,给函数传递两个参数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 date(sex, age, hobby):
print("拿出手机")
print("打开陌陌")
print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
print("找个漂亮的妹子")
print("问她,约不约啊!")
print("ok 走起")
date(hobby='唱歌',sex='女',age='25~30',)
-
混合参数
def date(sex, age, hobby): print("拿出手机") print("打开陌陌") print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby)) print("找个漂亮的妹子") print("问她,约不约啊!") print("ok 走起") date('女',hobby='唱歌',age='25~30',)
混合参数, 位置参数必须在关键字参数前面
2)形参角度:
- 位置参数
位置参数其实与实参角度的位置参数是一样的,就是按照位置从左至右,一一对应
def date(sex, age, hobby):
print("拿出手机")
print("打开陌陌")
print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
print("找个漂亮的妹子")
print("问她,约不约啊!")
print("ok 走起")
date('女','25~30','唱歌')
- 默认参数
def stu_info(name, age, sex='男'): #sex='男'就是一个默认参数
print("录入学生信息")
print(name, age, sex)
print("录入完毕")
stu_info("张强", 18)
练习:
def date(osname,cpu_info,ram_info):
print("====osname: %s ===="% osname )
print("+ CPU: %s +"% cpu_info)
print('+ 内存: %s +'% ram_info)
print("==================")
osname = input('请输入系统名称:')
cpu_info= input('请输入CPU型号:')
ram_info=input('请输入内存大小:')
date(osname,cpu_info,ram_info)
输出结果:
====osname: Centos ====
+ CPU: E52620 +
+ 内存: 128G +
==================
def register(n,s,a,e):
with open('aa.py',encoding='utf-8',mode='a') as f1:
f1.write('{}|{}|{}|{}
'.format(n,s,a,e))
while 1:
name = input('请输入姓名:(Q或者q退出)')
if name.upper()== 'Q':break
sex = input('请输入性别')
age = input('请输入年龄')
edu =input('请输入学历')
register(n=name,s=sex,a=age,e=edu)