函数的定义
函数:复用,谁用谁调用就行
格式:
def 函数名([参数]):#参数可有可无
代码
函数名的命名:一个单词全部小写,多个单词,下划线分割
代码:表示封装重复内容。
函数的调用
函数名()
单一个函数名,表示函数的地址,但是加了括号,则表示,指代地址。
遇到一个函数,先加载到内存,只有当调用了才能运行代码。
作业:定义一个登入函数login函数
admin 1234
输入用户名和密码,验证是否登入成功
def login() :
while True:
name = input("请输入你的用户名:")
password = input("请输入你的密码:")
if name == "admin" and password == "1234":
print("登入成功!")
break
else:
print("用户名或者密码错误,请重新输入:")
login()
函数的参数
无参数:
def 函数名()
pass
有参数:
def 函数名(【参数】)
pass
参数的作用
只能通过参数,向函数内部送值。
参数就是调用函数时,向函数传值。
作业1:将上次登入界面,添加可可控制最多登入次数;
def login(n) :
i=0
while i<n:
name = input("请输入你的用户名:")
password = input("请输入你的密码:")
if name == "admin" and password == "1234":
print("登入成功!")
break
else:
print("用户名或者密码错误")
i+=1
if i==n:
print("对不起,账号已被定")
login(3)
作业2:求1到n的累加和
def sum(n):
s=0
for i in range(1,n+1):
s+=i
print(s)
sum(50)
默认值参数
定义参数时,有一个或者多个参数已经赋值了,
def 参数名(【参数1,参数2,参数3=值】)
pass
没有赋值的参数,在调用的时候一定要输入参数,但是默认值参数在调用时,可以不传参。
但是在定义的时候,默认值参数一定要位于普通参数的后面。
关键字参数赋值
默认参数的顺序都是固定的,但是调用时使用关键字参数时,打乱传值的参数。
参数的类型可以是列表
可变参数
- *arge
参数的数量不固定
def get_sum(*args)
pass
加星号默认加入到一个列表中。 - ** kwargs
只有给关键字参数的时候才能运行,kw表示关键字参数赋值
相当于键值对,函数调用的时候必须加关键字参数,才能将其转换成key:value,才能装到字典中。 - *arge和 ** kwargs同时存在一个函数的参数中
一颗星的表示元组,两颗星表示一个字典
函数的返回值
参数:外面向里面传递值
返回值:里面向外面传递值【return 返回值】
有返回值需要将变量去接这个容器。
格式:
def 函数名(【参数】)
pass
return 返回值
只要有返回值,就必须外界有东西接受。
作业:创建一个函数,返回他的最大值和最小值。
def get_maxandmin (numbers):
numbers.sort()
min=numbers[0]
max=numbers[-1]
return min ,max
list1=[11,56,45,3,5,2,8,9,10]
result=get_maxandmin(list1)
print(result)
return后面的值,可以是一个值,也可以是多个值,如果是多个值,可以将多个值封装在一个元组中,然后再返回元组
函数间的调用
作业:验证是否登入成功
自定义一个函数,判断用户是否登入成功Islogin,
参数:username password
函数体
判断用户输入的用户名和密码是否正确,如果正确返回为True 否则返回为False
借书系统 borrow_book
参数是书名
函数体:
判断是否登入成功,如果登入成功,则可以借到书
如果登入失败,则提示:还未登入,不能借书。
def islogin(username,password):
if username=="admin" and password=="1234":
return True
else :
return False
def borrow_book(bookname):
username=input("请输入用户名:")
password=input("请输入密码:")
key=islogin(username,password)
if key==True:
print("成功借书")
else :
print("还未登入,不能借书")
print('欢迎来到借书系统')
bookname=input('请输入你要借书的书名:')
borrow_book(bookname)
函数的全局和局部变量
- 函数自身的变量叫做局部变量
- 函数之外的是全局变量
- 局部变量的作用范围只在函数内部
- 函数找变量的规律是:
首先找函数内部的变量,
如果函数内部包括该变量,则使用函数内部的变量,
如果函数内部没有该变量则使用全局变量。
- global a 可以修改全局变量
只有不可变的类型才能加global,可变的类型不用加global
可变,不可变
改变变量的值时,地址发生改变,认为该类型不可变
里面的内容发生改变,但是地址没有发生改变,称为可变类型。
不可变类型:int str 浮点,元组
可变的类型:列表 字典,集合
- 函数内部可以使用全局变量但是不能更改
作业:
停车计费系统:
进入停车场记录进入时间,出去记录出去时间,
停车时间等于:出去时间-进入时间
停车场数据结构:
【{”车牌“:【进入时间,出去时间】,{”车牌“:【进入时间,出去时间】…】
15分钟 1块钱
1个小时 4块钱
停车场变量为全局变量