ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【函数篇】初识函数,函数的定义、返回值、参数

2019-08-13 18:59:13  阅读:191  来源: 互联网

标签:艾克 初识 参数 func print 返回值 你好 函数


函数的定义用def:

def func():  #func为函数名,定义方式与变量一样
    i = '你好,函数'
    return i  #返回值
l = func()   #以函数名方式直接调用函数
print(l)

函数的返回值return:

  可以为一个值

  可以为多个值:接收时可以用一个变量接收,一个变量接收时返回为元组类型;可以用多个变量分别接收

def func():
    i = '你好,函数','你好,艾克','你好,李'
    return i
l = func()
l1,l2,l3 = func()
print(l)
print(l1,l2,l3)

 

输出:

('你好,函数', '你好,艾克', '你好,李')
你好,函数 你好,艾克 你好,李

 

 

函数的参数:

  形参(接收的参数):

    位置参数,*args,默认参数(关键字参数),**kwargs:

      总共四种,可以相互结合,结合使用时,位置参数必须放在第一位;可以为空;四种一起使用时,必须按照这个顺序;

      位置参数必须传,*args可以接收多个参数;默认参数可以不传,传送时必须在**kwargs前面;**kwargs可以接收多个关键字参数;

      位置参数和*args返回为元组,默认参数和**kwargs返回为字典

  实参(传送的参数):按位置传;按关键字传;前两者混合使用时,传送的位置参数必须在前

def func(a,b,c):
    return a,b,c
l = func('你好,函数','你好,艾克','你好,李')
l1,l2,l3 = func('你好,函数','你好,艾克','你好,李')
print(l)
print(l1,l2,l3)


#打印:
('你好,函数', '你好,艾克', '你好,李')
你好,函数 你好,艾克 你好,李
位置参数,按位置传送,以一个变量接收时,返回为元组,可以用多个变量接收

 

def func(a='',b='',c=''):
    return a,b,c
l = func(b='你好,函数',a='你好,艾克',c='你好,李')
print(l)

#打印:
('你好,艾克', '你好,函数', '你好,李')


def func(d,a='',b='',c=''):
    return a,b,c,d
l = func('aike',b='你好,函数',a='你好,艾克',c='你好,李',)
print(l)

#打印:
('你好,艾克', '你好,函数', '你好,李', 'aike')
关键字(默认参数)传送可以打乱位置,但和位置传输混合使用时,位置参数必须在第一位,否则会报错

 

def func(a,*args,b = 'ak'):
    return a,args,b
l = func('你好,函数','你好,艾克','你好,李',b = 'aike')
l1 = func(1,2,3,4)
print(l)
print(l1)

#打印:
('你好,函数', ('你好,艾克', '你好,李'), 'aike')
(1, (2, 3, 4), 'ak')
*args,可以接收多个参数,不能以关键字传输,可以为任意数据类型,和位置参数混合使用时,位置参数必须在第一位,如果放在后边,传值时传不到,会报错 如果和默认参数混合使用时,默认参数必须放在*args后边,且默认参数进行传值时,同样需要在最后边

 

def li(**kwargs):
    return kwargs
l = li(s = '柚柚柚切克闹',d = '小李小李可爱无比',f = '是的')
print(l)

#打印:
{'s': '柚柚柚切克闹', 'd': '小李小李可爱无比', 'f': '是的'}


def func(a,*args,b = 'ak',**kwargs):
    return a,args,b,kwargs
l = func('你好,函数','你好,艾克','你好,李',b = 'aike',s = '柚柚柚切克闹',d = '小李小李可爱无比')
l1 = func(1,2,3,4)
print(l)
print(l1)

#打印:
('你好,函数', ('你好,艾克', '你好,李'), 'aike', {'s': '柚柚柚切克闹', 'd': '小李小李可爱无比'})
(1, (2, 3, 4), 'ak', {})
**kwargs,可以接收多个关键字参数,返回为字典,不能按照位置传,混合使用时,排最后,否则传输顺序错乱,会报错

 


上面的*args和**kwargs称为动态传参,是站在形参的角度。那么站在实参的角度如何进行动态传输:

def func(*args):
    return args
l = ['你好','函数','你好','艾克','你好','李']
print(func(*l))
print(func(*['你好','函数','你好','艾克','你好','李']))
print(func(l))

#打印:
('你好', '函数', '你好', '艾克', '你好', '李')
('你好', '函数', '你好', '艾克', '你好', '李')
(['你好', '函数', '你好', '艾克', '你好', '李'],)
形参为*args时,在传参时给序列加一个*即可,如果不添加*,打印出来的是将它以一个整体当作元组的方式打印
def func(**kwargs):
    return kwargs
l = {'a':'你好函数','b':'你好艾克','c':'你好李'}
l1 = {'a':'你好函数'}
print(func(**l))
print(func(**{'a':'你好函数','b':'你好艾克','c':'你好李'}))
print(func(**l1))

打印:
{'a': '你好函数', 'b': '你好艾克', 'c': '你好李'}
{'a': '你好函数', 'b': '你好艾克', 'c': '你好李'}
{'a': '你好函数'}
形参为**kwargs时,在传参时在字典前加两个*即可,即**。由于**kwargs的返回值是字典,所以在实参的角度进行动态传输必须以字典形式传入参数,否则会报错

 

标签:艾克,初识,参数,func,print,返回值,你好,函数
来源: https://www.cnblogs.com/aizhinong/p/11347752.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有