本节内容:
1.什么是函数
2.函数的定义,函数名,函数体以及函数的调用.
3.函数的返回值
4.函数的参数
一.什么是函数
我们可以定义一个事情或功能,等到需要的时候去用就好了,那么这里定义的东西就是一个函数.
函数:对代码块和功能的封装和定义
二.函数的定义
函数名,函数体,以及函数的调用,我们使用def关键字来定义函数的
定义语法:
def 函数名( 形参 )
函数体
函数名( ) #调用函数
例题:
def yue( )
print("约定一起看电影!")
yue ( ) #调用函数===>结果就是打印"约定一起看电影"
三.函数的返回
执行函数之后,可以使用return 来返回结果
1.函数中遇到return,此函数结束,不再继续执行下面的代码
def yue( )
print("约你")
print("约他")
return
print("哈哈") #前面有returu,所以ruturn后面的代码不会被执行.
2.给函数的调用者一个访问结果
def yue( )
print("约你")
return "美女一枚","宝宝" #return返回值可以有多个结果
girl = yue()
print("gril") ===>则会输出"美女一枚","宝宝"
总结:
1.遇到return,此函数结束,函数后面的东西将不再执行
2.return 返回值
关于返回值:
如果return什么都不写或没有写return,返回NONE
如果return后面写了一个值,则调用者可以接受一个结果.
如果return后面写了多个结果,则最终结果是将所有的返回值放在一个tuple元祖中存放.
四.函数参数
def yue( chat )
print("打开"+ chat)
yue ( 微信 ) #调用函数的地方给出一个实参,传递给函数位置的形参数,然后,形参在函数被调用的过程中写入到程序中.
#例子中"微信"被传递并调用,则最终输出结果是---"打开微信"
关于参数:
1.形参
函数声明位置的变量叫做形参
2.实参
函数调用是传递给函数的参数,叫做实参
3.传参
在整个函数被调用的过程中,将实参传递给形参数的过程就叫做传参.
参数的分类:
首先我们看看实参:
4.11位置参数
在函数被调用的过程中,将形参的值直接给出来,如: "宝宝",22,"女",1 分别和定义函数时的name,age,sex,id 一一对应
def fn(name,age,sex,id):
print("名字:%s 年龄:%s 性别:%s id:%s " % (name,age,sex,id))
return "我的"
se = fn("宝宝",22,"女",1)
print(se)
4.1.2关键字参数
在函数被调用的过程中,分别把每个变量的值都给出来,如: name="宝宝",22,sex="女",id=1 (顺序可以改变) 和定义函数位置的 (name,age,sex,id)是互相对应的.def fn(name,age,sex,id):
print("名字:%s 年龄:%s 性别:%s id:%s " % (name,age,sex,id))
return "我的"
se = fn(name="宝宝",22,sex="女",id=1)
print(se)
4.13混合参数
在函数被调用过程中,有些变量的值是位置参数按照顺来一一赋值的,而有一部分的值是关键字参数来赋值的.
def fn(name,age,sex,id=1):
print("name=%s age=%s sex=%s id=%s " % (name,age,sex ,id))
se =fn("大宝宝",18,id=1,sex="女")
注意:先使用位置参数赋值,然后再使用关键字赋值,使用过了关键字赋值就不能再使用参数赋值.------->关键字参数必须在位置参数后面
4.2从形参角度看,一共分为三种
4.2.1 位置参数
按照位置来赋值
4.2.2
再函数声明是就可以给出函数参数的默认值,再调用的时候给出具体的值,也可以不给,使用默认值.
函数再调用过程中,形参数id=1,已近给了一个默认值1,如果调用时给出id则使用被调用者给出的id值,否则使用默认的id=1.
def fn(name,age,sex,id=1):
print("name=%s age=%s sex=%s id=%s " % (name,age,sex ,id))
se =fn("大宝宝",18,id=1,sex="女")
注!!必须先声明位置参数,才可以声明位置参数的默认值
# day9 作业及默写
# 1,整理函数相关知识点,写博客。
# 整理完了
# 2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
#
# def jishu(lst):
# count = 0
# lst1 = []
# while count < len(lst):
# lst1.append(lst[count])
# count += 2
# return lst1
# l1 = [1,2,3,4,5,6,7,8,9]
# print(jishu(l1))
# 3,写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
# def leng(lis):
# if len(lis)> 5:
# return "长度大于5"
# return "长度不大于5"
# l1 = [1,2,3]
# a = leng(l1)
# print(a)
#
# 4,写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
# def line(lis):
# if len(lis) > 2:
# return lis[0],lis[1]
# return None
# l1 = [1,2,3,4,5,6]
# print(line(l1))
#
# 5,写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
# def jishu(str):
# num = 0
# alpha = 0
# space = 0
# oth = 0
# for i in str:
# i.upper()
# if i.isdigit(): #数字
# num += 1
# elif i.isalpha(): #字母
# alpha += 1
# elif i.isspace(): #空格
# space += 1
# else: #其他
# oth += 1
# return num,alpha,space,oth
# # l1 = "123abAS @#$%^&"
# l1 = input("请输入字符串:")
# print(jishu(l1))
# 6,写函数,接收两个数字参数,返回比较大的那个数字。
# def bijiao(a,b):
# if int(a)>int(b):
# return a
# return b
# a = input("请输入一个数字:")
# b = input("请再输入一个数:")
# print(bijiao(a,b))
#
# 7,写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
# dic = {"k1": "v1v1", "k2": [11,22,33,44]}
# PS:字典中的value只能是字符串或列表
# def zidian(k,v):
# dic = {}
# while 1:
# # k = input("请输入k值:")
# if k.upper() == "Q":
# return dic
# v = input("请输入value值:")
# if type(v) == str:
# if len(v) > 2:
# v = v[0] + v[1]
# dic[k] = v
# else:
# dic[k] = v
# elif type(v) == list:
# if len(v) > 2:
# lst1 = []
# lst1.append(v[0])
# lst1.append(v[1])
# dic[k] = lst1
# dic[k] = v
#
#
# # if type(v) == list or type(v) == str:
# # if len(v) > 2:
# # v = v[0] + v[1]
# # dic[k] = v
# # dic[k] = v
# # # return dic
# else:
# print("value值不符合规则!!请重新输入!!")
# # return dic
#
#
#
# print(zidian())
#
# 8,写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,
# 此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
# def zidian(lis):
# if type(lis) == list:
# dic = {}
# count = 0
# for el in lis:
# dic[count]=el
# count += 1
# return dic
# return "不是列表类型"
# lis = [11,22,33]
# print(zidian(lis))
#
# 9,写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,
# 然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
#
# def luru():
# f = open("student_msg.txt", mode="a+", encoding="utf-8")
# f.write("姓名 性别 年龄 学历 ")
# f.flush()
# f.close()
# while 1:
# name = input("请输入姓名:")
# if name.upper() == "Q":
# break
# else:
# sex = input("请输入性别:")
# age = input("请输入年龄:")
# collage = input("请输入学历:")
# f = open("student_msg.txt", mode="a+", encoding="utf-8")
# f.write(name + " ")
# f.write(sex + " ")
# f.write(age + " ")
# f.write(collage + " ")
# f.flush()
# f.close()
#
# luru()
#
#
# 10,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
# def luru(name,age,collage,sex="男"):
# f = open("student_msg.txt", mode="a+", encoding="utf-8")
# f.write(name + " ")
# f.write(sex + " ")
# f.write(age + " ")
# f.write(collage + " ")
# f.flush()
# f.close()
#
# f = open("student_msg.txt", mode="a+", encoding="utf-8")
# f.write("姓名 性别 年龄 学历 ")
# f.flush()
# f.close()
# # while 1:
# # name = input("请输入姓名:")
# # if name.upper() == "Q":
# # break
# # else:
# # sex = input("请输入性别:")
# # age = input("请输入年龄:")
# # collage = input("请输入学历:")
# # luru(name,age,collage,sex)
# luru("康琛","21","本科")
#
#
# 11,写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。
# def xiugai(name,old,new):
# import os
# with open(name, mode="r", encoding="utf-8") as f1, open("news", mode="w", encoding="utf-8") as f2:
# for line in f1:
# s = line.replace(old, new)
# f2.write(s)
#
# os.remove(name) # 删除文件
# os.rename("news", name)
# xiugai("cook.txt","肉","菜")
#
# 12,写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)
# def dl():
# count = 0
# while count < 3:
# admin = input("请输入用户名:")
# password = input("请输入你的密码:")
# if admin == "kc" and password == 123:
# print("登陆成功!")
#
# else:
# count += 1
# f = open("admins.txt",mode="r",encoding="utf-8")
# for line in f.readlines():
# lst = line.split(":")
# # print(line)
# # print(f.readlines())
# print(lst)
# def dl(): #-------------------------登陆模块-----------------------
# admin = input("请输入用户名:")
# password = int(input("请输入你的密码:"))
# f = open("admins.txt", mode="r", encoding="utf-8")
# for line in f.readlines():
# lst = line.split(":")
# if admin == lst[0] and password == int(lst[1]):
# return "登陆成功!"
# break
# else:
# pass
# return "用户名或密码不正确!!"
# # print(dl("kc",112))
# # dl()
# # print(dl())
# def zc(): #-----------------------注册模块----------------------
# f = open("admins.txt", mode="a", encoding="utf-8")
# admin = input("请输入用户名:")
# password = input("请输入密码:")
# # f.write("admin"+":"+"password")
# # f.write(" ")
# f.write(" "+admin+":"+password)
# #
#
#
# #-------------------------系统主框架---------------------
# print("""
# 欢迎进入系统首页:
# 1.登陆系统
# 2.注册系统
# """
# )
# num = int(input("请输入选择:"))
# if num == 1:
# print("欢迎进入登陆系统:")
# count = 0
# while count < 3:
# print(dl())
# count += 1
# elif num == 2:
# print("欢迎进入注册系统!!")
# zc()
# else:
# print("输入有误!!")
# #