标签:odi 混合 ret 传参 代码 默认参数 put == 种类
1.初始函数
在没有函数之前,我们是怎么实现一段代码的呢?我们之前学了len()方法,可以求出一个列表的长度,假如现在没有len()方法,那我们要自己写一个类似功能的代码来实现求一个列表的长度。
代码如下:
list = [1,2,3,‘hello‘,‘abc‘]
count = 0
for i in list:
count +=1
print (count)
这段代码实现了len()的功能,但是如果一个程序里有n多需要测试长度的地方,我们需要黏贴n遍这样的代码,所以这样的操作有什么缺点呢?
1. 重复代码多
2.可读性差
2. 创建函数
我们通过定义一个函数,就能解决以上两个问题。
s1 = ‘hello world!!!!‘
def my_len():
count = 0
for i in s1:
count += 1
# print(count)
my_len()
2.1 函数的语法格式:
def 函数名(参数1,参数2,参数3,...): ‘‘‘注释‘‘‘ 函数体 return 返回的值 注意:函数名要能表达出这个函数的作用和意义
2.2 如何运行一个函数
函数名加上括号()调用一个函数,就是执行函数
my_len()
2.3 函数运行遵循的原则
原则:先定义,再调用
2.4 函数的返回值return
作用1:返回值的作用:函数执行时,当遇到返回值return是就结束函数
代码:
def func1():
print(11)
print(22)
return
print(333)
print(444)
func1()
作用2:返回值会返回给给函数的调用者(执行者)
举例:return 后接单个值
def my_len():
count = 0
for i in s1:
count += 1
return 666
print(my_len(),type(my_len()))
举例:return 后接多个值
def my_len():
count = 0
for i in s1:
count += 1
return 666,222,count,‘中国‘
print(my_len(),type(my_len()))
举例:return 后接多个值,且赋值给多个变量
def my_len():
count = 0
for i in s1:
count += 1
return 666,222,count
ret1,ret2,ret3 = my_len() # (666, 222, 19,)
print(ret1)
print(ret2)
print(ret3)
3. 函数的参数
定义函数时的括号就是放置函数参数的地方,这时的参数叫形式参数,简称形参,例如:def my_len(a,b) #括号中是定义参数的地方
如果定义函数时有形参,调用函数时括号里面也要写参数,这是的参数叫实际参数,简称实参,例如:my_len (1,2) #括号里面的实参,就是实际的数
3.1 实参的种类
def func1(x,y):
print(x,y)
func1(1, 2)
def func1(x,y,z):
print(x,y,z)
func1(y=2,x=1,z=5,)
def func2(argv1,argv2,argv3):
print(argv1)
print(argv2)
print(argv3)
func2(1,2,argv3=4)
3.2 形参的种类
def func1(x,y):
print(x,y)
func1(1,2)
如果有一个形参有默认参数,实参在传参时可以不传,函数运行时会自动识别默认参数的值。
如果实参对于形参的默认参数传递了新值,那么新值会覆盖了默认参数的值
举例:统计姓名def register(name,sex=‘男‘):
with open(‘register‘,encoding=‘utf-8‘,mode=‘a‘) as f1:
f1.write(‘{} {}\n‘.format(name,sex))
while True:
username = input(‘请输入姓名:/q 或者 Q 退出‘) #传参时可以不传sex
if username.upper() == ‘Q‘:break
if ‘a‘ in username:
sex = input(‘请输入性别:‘) #程序运行中给sex参数重新赋值
register(username,sex)
else:
register(username)
形参中的*args,作用是接收实参角度的所有多余的位置参数,并把它们放到一个元组中
形参中的**kwargs,作用是接收实参角度的所有多余的关键字参数,并把它们放到一个字典中
举例:def func2(*args,**kwargs):
print(args) # 元组(所有位置参数)
print(kwargs) #字典(所有关键字参数)
func2(1,2,3,4,5,6,7,11,‘john‘,‘中国‘,a=‘ww‘,b=‘qq‘,c=‘222‘)
4. 参数的顺序
def func3(a,b,*args,sex=‘男‘):
print(a)
print(b)
print(sex)
print(args)
func3(1,2,‘中国‘,‘tom‘,‘jerry‘,sex=‘女‘)
def func3(a,b,*args,sex=‘男‘,**kwargs):
print(a)
print(b)
print(sex)
print(args)
print(kwargs)
func3(1,2,‘中国‘,‘tom‘,‘jerry‘,name=‘jack‘,age=46)
5. 打散和聚合功能
print(args)
print(kwargs)
l1 = [1,2,3,4]
l11 = (1,2,3,4)
l2 = [‘tom‘,‘jack‘,4]
func1(*l1,*l2,*l11) # 函数的执行:* 打散功能。
标签:odi 混合 ret 传参 代码 默认参数 put == 种类
原文地址:https://www.cnblogs.com/airkoala/p/8984633.html