码迷,mamicode.com
首页 > 其他好文 > 详细

2.1函数结构以及自定义函数、函数参数

时间:2021-01-21 10:57:41      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:rgba   聚合   逗号   margin   key   keyword   rgs   strong   例子   

一、函数结构

1.函数:函数以功能为导向,用代码实现特定的功能,这样能够有效减少代码的重复性,同时增强代码的可读性(通过名字就可以直观的看出代码的功能)。

自定义函数结构:def  函数名():

                         函数体

其中def是定义英文单词的缩写,是必须要有的,函数名可以自定义,函数体就是实现功能的代码,需要注意的是,函数体需要缩进,体现函数的隶属关系。

2.函数的调用:函数的调用就是指函数名加括号的时候,这是函数才真正的实现功能。

3.函数的返回值:函数是要实现一定功能的,这里就需要函数有一个结果,就是返回值,返回值用return表示,在函数中遇到return直接终止函数,将结果返回给函数的执行者,多个返回值用逗号隔开。

def songs():
    print(风月)
    print(思念是一种病)
    print(小宇)
    print(人啊)
    return 风月,人啊

二、函数的参数

举例来说,函数想要实现一个加法的功能,就需要函数的调用者输入加数与被加数,这就是函数的参数,参数的作用就是盘活函数,函数可以从两个角划分,一是形参,一是实参。

形参就是在定义函数的时候就确定的参数,实参是执行时需要写的参数,就是执行的时候输入的参数。

1.实参传参

a、位置参数:参数与输入的参数顺序一一对应。

def introduce(name ,age):
    print(my name is +name, i am +age)
introduce(qidian,18)
# 这样输入的内容和name,age一一对应,就是位置参数

b、关键字参数

 上面的例子中输入的名字和年龄的顺序必须一一对应,否则年龄与姓名的顺序就会颠倒,而关键字参数是在输入的时候就指定参数名称,例如name=‘qidian‘,age=18,这样在输入的时候就不需要设定顺序。

c、混合参数

就是位置参数与关键字参数一起使用,需要注意的是关键字参数一定要在位置参数的后面。

def date(sex, age, hobby):
    print(奇点)
date(,hobby=唱歌,age=18,)

2.形参传参

a、位置参数:与实参传参一致。

b、默认参数:形式上与关键字参数一致,如果在执行的时候不修改,就会使用默认参数,修改就会使用新的参数。

c、动态参数:也叫动态参数。

# 动态参数分为两种:*args和**kwargs.

# ?动态接收位置参数:*args

# 如果参数很多,用多个参数接收很麻烦(或者你也不知道究竟需要设置多少个参数),那么就可以使用动态参数*args
def eat(*args):
  print(我请你吃:,args)
eat(蒸羊羔儿,蒸熊掌,蒸鹿尾儿,烧花鸭,烧雏鸡,烧子鹅) # 我请你吃: (‘蒸羊羔儿‘, ‘蒸熊掌‘, ‘蒸鹿尾儿‘, ‘烧花鸭‘, ‘烧雏鸡‘, ‘烧子鹅‘)
?# args无实际意义,只是约定俗成使用它,*在这里是聚合的作用,能够将所有传入的参数聚合成为一个元组,然后以元组的形式赋值给args。
?# 动态接收关键字参数: **kwargs
# 与*args的使用一致,只不过**kwargs接受所有的关键字参数,然后形成一个字典,将这个字典赋值给kwargs。
def func(**kwargs):
  print(kwargs) # {‘name‘: ‘奇点‘, ‘sex‘: ‘男‘}
func(name=‘奇点,sex=)

d、仅限关键字参数:形式上是位参,但是传参的时候只能使用关键字传参的方式,这里后面会详细说明。

3.形参的顺序:位置参数、*args、默认参数、仅限关键字参数、**kwargs

首先大顺序上时位置参数、然后是关键字参数,位置参数里面前面的参数与位置参数一一对应,多余的位置参数由*args表示,如果在*args还需要一个位置参数表示,那么就出现了仅限关键字参数,最后放**kwargs将所有的关键字参数收进去。

def func(a,b,*args,c):
    print(a,b) # 1 2
    print(args) # (3, 4)
    print(c)
func(1, 2, 3, 4, c=5)
# 如果不写c=5,5的这个位置变量会被*args收进去

4.*和**的作用

 聚合

? * args可以接受多个实参,并且返回一个元组,**kwargs也是将多个关键字参数转化成一个字典返回,所以在函数的定义时 *起到的是聚合的作用。

打散

?函数执行时,将位置参数的实参(可迭代类型)前面加上**,相当于将这些实参给拆成一个一个元素当成位置参数,然后传给args,这时候是打散的作用。所以在函数的执行时,**起到的是打散的作用。

? *除了在函数中可以这样打散,聚合外,函数外还可以灵活的运用:

a,*b = (1, 2, 3, 4,)
print(a, b) # 1 [2, 3, 4] # 注意形式是列表
*rest,a,b = range(5)
print(rest, a, b) # [0, 1, 2] 3 4
print([1, 2, *[3, 4, 5]]) # [1, 2, 3, 4, 5]

 


 

2.1函数结构以及自定义函数、函数参数

标签:rgba   聚合   逗号   margin   key   keyword   rgs   strong   例子   

原文地址:https://www.cnblogs.com/superpoint/p/14300756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!