码迷,mamicode.com
首页 > 编程语言 > 详细

Python中的函数

时间:2019-02-25 18:41:21      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:顺序   aaa   动态   font   pytho   col   返回值   pass   ret   

函数的格式

def 函数名(形参):
    函数体
    return 返回值

 

函数的返回值

return

  • 结束函数体的执行,并且设定返回值

  • return后面不加入任何内容,默认返回None

  • 不加return默认也是返回None

  • return可是返回多个值,多个值中间用逗号分隔;

示例

def test1():
    for i in range(5):
        pass
    return aaa,bbb
print(test1())

 

函数的参数

传递参数(实参)

  • 是一个实实在在的参数,是占据内存地址的

  • 传递参数是在调用函数的过程当中进行的

 

接收参数(形参)

  • 是一种形式意义的参数

  • 在定义时是不占据内存地址

  • 接收参数是在定义函数的过程中进行的

  • 形参可以没有、一个或者多个;多个形参之间用逗号分隔

 

位置参数

调用函数时根据函数定义的参数位置来传递参数

def print_hello(name, sex):
    sex_dict = {1: u先生, 2: u女士}
    print(hello %s %s, welcome to python world! %(name, sex_dict.get(sex, u先生)))

print_hello(tanggu, 1)
# 两个参数的顺序必须一一对应,且少一个参数都不可以

 

关键字传参

用于函数调用,通过“键-值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。

def sum1(a, b):
    print(a, b)
    res = a + b
    return res

# 正确示范
ret = sum1(1, 2)
ret = sum1(a=1, b=2)
ret = sum1(b=1 , a=2)

# 错误示范
ret = sum1(1, a = 2)        # 因为a同时接收了两个参数 

 

默认参数

用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值

def classmate(name,sex=):
print(%s : %s%(name,sex))

 

动态参数(*args)

接收所有的位置参数

def sum(*args):
    n = 0
    for i in args:
        n+=i
    return n

print(sum(1,2,3,4))

接收的是按照位置传参的值,组织成一个元组

 

动态参数(**args)

接收所有的关键字传参

def func(**kwargs):
    print(kwargs)

func(a = 1,b = 2,c =3)
func(a = 1,b = 2)
func(a = 1)

接受的是按照关键字传参的值,组织成一个字典

 

解包

*和**,也可以在函数调用的时候使用,称之为解包裹(unpacking)

1、*的解包方式

def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。
    print(args)

func(1,2,3,4,5)
l = [1,2,3,4,5]
func(*l)  #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散

 

2、**的解包方式

def func(**kwargs):
    print(kwargs)

func(a=1,b=2)
d = {a:1,b:2} #定义一个字典d
func(**d)

 

总结

  1. 站在传参的角度上,参数的传递顺序是:位置传参 >> 关键字传参
  2. 站在形参的角度上,参数的设定顺序是:位置参数 >> 动态参数(*args) >> 默认参数 >> 动态参数(**args)

 

Python中的函数

标签:顺序   aaa   动态   font   pytho   col   返回值   pass   ret   

原文地址:https://www.cnblogs.com/guge-94/p/10431526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!