python 05.29
1.函数
把重复代码写成一个通用模板:把冗余的代码独立开。
我们的函数就是工具 ,把工具事先准备好,然后下次使用的时候直接调用就行。
def 函数名():
代码块 #实现某一个具体的功能
def login():
"""登录功能"""
username = input('请输入你的用户名>>>').strip()
pwd = input('请输入你的密码').strip()
user_dict = dict()
with open('userinfo.txt','r',encoding='utf8') as fr:
for user in fr:
user_list = user.strip().split(':')
user_dict[user_list[0]] = user_list[1]
if username in user_dict and pwd == user_dict.get(username):
print('登录成功')
函数的定义分为两个阶段:
定义:本来报错的不会报错,定义阶段只识别语法,不运行代码
调用:执行函数体代码
2.定义函数的三种形式
函数只是一种工具,干活的具体的实现都是靠if/while/for+变量,函数只是是你干活更轻松。
无参函数
ef self_max():
x, y = 10, 20
if x > y:
print(x)
else:
print(y)
有参函数,定义几个参数,就必须传入几个参数
def self_max(x, y):
if x > y:
print(x)
else:
print(y)
self_max(100,500)
空函数
def self_max():
pass
self_max()
3.函数的返回值
def self_max(x,y):
if x> y:
return x
else:
return y
函数名相当于变量名,用于接收函数的返回值。
def get_list():
return [1,2,3,4],2
return None #返回值为None
return的语法:
①return可以返回默认值None:
②return可以返回任意数据类型:
③当return返回多个值的时候,会以元组的形式把多个值包在一起:
④return会终止函数。
4.函数对象
python中一切皆对象。
def self_max(x, y):
if x > y:
return x
else:
return y
def max_4num(x, y, a, b):
res1 = self_max(x, y)
res2 = self_max(res1, a)
return self_max(res2, b)
res = max_4num(1,5,9,13)
print(res)
5.函数参数的应用
函数的定义分为两个阶段:
定义阶段:定义阶段的参数x,y 被称为形参,形参具有描述意义,类似于变量名,不为具体的数据类型,
调用阶段:调用阶段的参数x,y被称为实参,实参必须是具体的数据类型
def self_max(x, y): # 位置形参
if x > y:
return x
print(233)
return y
默认形参**,在函数被定义时,提前赋值给形参,当实参重新传入值时,会覆盖原先的形参。
值不需要改变,并且经常使用,默认形参必须在位置形参后面
关键字实参
用在函数调用阶段,找到形参的对应关系,并赋值给形参,形参名是什么则关键字的形参名必须是什么。
当参数较多时可使用关键字实参,关键字实参在位置实参后面。
(位置形参,默认形参,关键字形参)
6.可变长参数
def self_max(a,b,c,d,e,f,g,h,k,x=1,y=3,z=4): # 默认参数
print(a,b,c,d,e,f,g,h,k,x,y,z)
a= [1,2,3,4,5,6,7,8,9] # *把这个列表内的元素一个一个取出来,然后一个一个传给这个函数
b = {'x':10,'y':12} # **会把这个字典打散成键值对的形式作为实参传给函数
self_max(*a,**b) # 可变长实参 # (1,2,3,4,5,6,7,8,9,x=10,y=12)
# self_max(1,2,3,4,5,6,7,8,9) # *a的作用
# self_max(x=10,y=12) # **b的作用
# 可变长形参
def self_max(*args,**kwargs):
print(args) #*a接受了所有位置实参,然后以元祖的形式保存下来,只接受位置参数,不接受关键字实参
print(kwargs) # **b接收所有的关键字实参,然后以字典的形式保存下来
self_max(1,2,3,4,5,6,7,x=6,y=8,z=20,a=10,c=1000)
# *后面必须得写args,**后面必须得写kwargs,约定俗成的一种规范

浙公网安备 33010602011771号