Python学习--方法的参数分类

Posted anmaozhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习--方法的参数分类相关的知识,希望对你有一定的参考价值。

python中定义方法的参数主要有四种:

1、普通参数:

    普通参数非常普遍。

def f1(name, age):
    print(my name is %s, i am %s years old % (name, age))

    name和age就是两个普通的参数。在调用方法f1时,一定按照定义时的顺序依次传入name和age两个实参。

 f1(Andy, 21)

2、默认参数:

    默认参数是指在定义方法是给某个形式参数一个默认的值。

   

def f2(name, age, home=Shanghai):
    print(my name is %s, i am %s years old, i come from %s % (name, age, home))

    在调用该方法时,如果不传递实参,则该参数的实参是定义方法时指定的值,如果调用时传递了实参,则这个参数的值就是传递的值。

f2(an, 21)
>>>my name is an, i am 21 years old, i come from Shanghai
f2(‘an‘, 21, ‘Jiangxi‘)
>>>my name is an, i am 21 years old, i come from Jiangxi

      在定义这种方法时一定要把带有默认值的参数放在参数列表的最后。

3. 指定参数

    指定参数方法的定义和普通方法无异,在传递实参时不必非得按照定义的参数顺序传递,但是要指定传递的实参是给哪个形参的,其形式如下:

f1(age=21, name=an)
>>>my name is an, i am 21 years old

4. 可变参数

    可变参数的意义是传递的实参个数是没有个数限制的,0个到n个参数都可以。它的形式是:   

def calc(*args):
s = 0
for i in args:
s +=i
print(s)

    所以我们在调用的时候就可以传入0个或多个实参了,这些参数在函数调用的时候被组装为一个tuple。

calc(1, 2, 3)  

 如果事先拿到的数据就是一个list或者tuple怎么办呢?我们可以在list或者tuple的的实参前面加上*号把它们转化为可变参数:

num = (3,4,5)
calc(*num)
num2 = [4,5,7]
calc(*num2)

5. 关键字参数:

   关键字参数的参数前面有两个*号,可以传递0个或多个参数进去,这些参数在函数调用时被组装成一个dict。

   示例中我们可以只传递必须的函数name和age,打印出的kwargs是一个空的dict。

def student(name, age, **kwargs):
    print(name:,name,age:,age, other:, kwargs)


student(小米, 15)
>>>name: 小米 age: 15 other: {}

   传递多个关键字参数

 

student(小米, 15, city=Beijing, grade=3)


name: 小米 age: 15 other: {city: Beijing, grade: 3}

   如果事先有一个dict的话,我们可以类似与可变参数的传值方式传递实参:

kw = {city: Beijing, grade: 3}
student(‘小米‘, 15, **kw)

6.组合参数

   组合参数是以上5种形式的不同组合,定义的顺序是:必选参数,默认参数,可变参数和关键字参数。

小结:

在使用默认参数时,参数一定要用不可变对象,使用可变参数会出现错误。

*args传入的是一个tuple。

**kw 传入的是一个dict。

 

 

 

    

   

 











以上是关于Python学习--方法的参数分类的主要内容,如果未能解决你的问题,请参考以下文章

python 机器学习有用的代码片段

学习笔记:python3,代码片段(2017)

Python 函数声明和调用

机器学习之路:python线性回归分类器 进行良恶性肿瘤分类预测

Python 数据可视化:分类特征统计图

Visual Studio 自定义代码片段在方法定义的参数列表中不起作用