1、函数定义:
函数就是组织好的可以重复使用的,用来实现单一或者相关联功能的代码端
作用:提高代码的复用性
2、如何定义函数:
def 标识符(参数1,参数2,参数3.。。)
函数体(用来实现单一或者相关联功能的代码段)
return[表达式]
函数是否需要带上return?
默认情况,可以不要return,或者只有return,返回None
什么情况需要return,需要调用这个函数的调用方法是否需要函数体中的某个值
3、函数调用
默认情况下参数值和参数名称是按照函数定义的顺序匹配的
实际情况,项目中存在多个参数的函数,不一定按照默认情况调用函数
4、调用函数时可以使用正式参数类型:
1)必须参数:必须以正确的顺序传入参数,调用时数量和定义时一样
2)关键字参数:调用时参数顺序可以和定义的顺序不一样
3)默认参数,调用时如果没有传参使用默认参数
4)不定长参数:调用函数方无法确定参数个数
(1)第一类,加*参数名
(2)第二类,加**参数名
(3)第三类,*单独出现 命名关键字参数
命名关键字参数:限制关键字参数的名称
定义参数的顺序:
必须参数,默认参数,可变参数(*参数或者*),命名关键字参数和**参数(不限定参数名称的)
不带参数的函数:
def welcome()
print("欢迎")
return
带参数的函数 name是形参
def welcome(name)
print(f"{name},欢迎")
welcome("zhangsan") //zhangsan是实参
有返回值函数
def max(a,b)
if a>b:
max=a
else:
max=b
return max
不定长参数(把不确定的参数存储再元组extra中):
def register(name,phone,*extra):
print(extra)
info=[name,phone]
for value in extra:
info.append(value)
print(f“{name}注册成功”)
print(f"{name}的注册信息是:",info)
调用1:
register("jasmine",'18200001111','sz','gz')
register('a'.'13200003333')
调用2:
extra=['sz,'12','aaa']
register("jasmine",'18200001111',*extra)
不定长参数(把不确定的参数存储再字典kwargs中):
def register1(name,phone,**kwargs):
print(kwargs)
info=["name"=name,"phone"=phone]
for key,value in kwargs.items():
info[key]=value
print(f“{name}注册成功”)
print(f"{name}的注册信息是:",info)
调用1:
register1("jasmine",'18200001111',city='sz',year="2")
调用2:
extra={city='sz',year="2'}
register1("jasmine",'18200001111',extra[city],extra[year]}
调用3:
register1("jasmine",'18200001111',**extra)
命名关键字参数(*单独出现,*作为命名关键字参数的分隔符,名称跟定义的参数的名称一致):
def register2(name,phone,*,city,year):
print(name,phone,city,year)
register2("lisi","13566667777",city="xa",year="3")
def register3(name,phone,*args,city,year):
print(name,phone,city,year)
register3("lisi","13566667777",city="xa",year="3")
计算多个数字之和
def sum(*args):
sum=0
for num in args:
sum+=num
return sum
value1=sum(1,2)
value2=sum(1,2,3)